0

在我的 iOs 应用程序中,我使用的是谷歌的静态库。我从他们的 git 存储库中提取了源代码,并将该项目链接为我的应用程序的子项目。

我需要更改有关跳过安装的库项目设置上的一些构建标志和设置。但是现在整个项目都不会提交,因为我无法提交库项目文件。我想保持图书馆连接到他们的存储库,以便能够获得新的更新。

当然我可以取消选中复选框标记,但是还有其他解决方案吗?

4

3 回答 3

2

您需要分叉 lib 项目并将其添加为子模块,因此您可以对 lib 进行更改,并从原始 repo 添加上游,您可以从中获取更改并保持 lib 更新。这里是关于fork a repo的 github 帮助页面,这里是关于子模块的文章

之后,您按照 github 页面中的说明分叉了 lib,这很容易......

如果您的项目是一个 git 项目,请在您的 git 项目根目录的 shell 中添加一个子模块

// git submodule add git://forkPath.git destinationFolder
// like this
git submodule add git://github.com/chneukirchen/rack.git rack

现在你需要初始化和更新你的项目子模块,就像这样

git submodule init
git submodule update

如果您的项目是 SVN 项目或类似的项目,请将 fork 克隆到项目根目录之外的某个位置(可能在同一级别):

// git clone git://forkPath.git
git clone git://github.com/chneukirchen/rack.git

现在您只需要将分叉项目链接到您的项目,导入类等...

更新一个叉子:

从子模块项目文件夹...

输入子模块的根目录,您将进入不同的 git 存储库,以添加作为原始存储库的远程上游:

// git remote add upstream https://originalRepo.git
git remote add upstream https://github.com/octocat/Spoon-Knife.git

现在您必须从上游提取更改并合并更改

git fetch upstream
git merge upstream/master

现在让您可以进行所有您想要的更改并提交

git commit fileToCommit.m -m 'a comment'

并推送到 fork 项目

git push 

或者如果您在特定的分支机构工作

git push origin/master
于 2013-06-07T13:05:44.067 回答
0

构建脚本可能会帮助您:

  • 保持当前谷歌图书馆项目的位置不变

  • 编写一个脚本,让 git 更新该文件夹,并在每次构建时运行。使用带有日期的“标志”文件,可以编写脚本以每天仅真正更新一次文件夹

  • 为项目文件以外的每个导入文件编写另一个脚本,将其复制到第二个文件夹

  • 将您要使用的项目文件放在第二个文件夹中

  • 删除对主库文件夹的原始引用,然后导入新的第二个文件夹。

瞧,现在您已经更新了源文件和修改后的项目文件。如果由于添加了新文件而导致构建中断,则可以将修改后的原始文件复制到第二个文件夹,根据需要更改设置。

于 2013-06-07T13:03:14.637 回答
0

为了跟踪更改,您可以使用 git 子模块,甚至更好 - Cocoapods(如果可能)。此外,您可以使用 XCode 工作空间并将库作为工作空间内的“并行”项目保留,而不是使其成为子项目 - 这在我的情况下使事情变得更简单。

于 2013-06-07T13:03:19.573 回答