在我的iOs应用程序中,我正在使用谷歌的静态库。我从他们的git存储库中取出了源代码,我将该项目链接为我的应用程序的子项目。
我需要更改有关跳过安装的库项目设置的一些构建标志和设置。但是现在整个项目都不会提交,因为我无法提交库项目文件。我想保持库连接到他们的存储库,以便能够获得新的更新。
当然我可以取消选中复选框标记,但还有其他解决方案吗?
答案 0 :(得分:2)
您需要派生lib项目并将其添加为子模块,这样您就可以对lib进行更改,广告在原始仓库中添加上游,您可以从中获取更改并保持lib更新。这里是关于fork a repo的github帮助页面,这里有一篇关于submodules
的文章之后你按照github页面中的解释分叉了lib,这很容易......
如果您的项目是一个git项目,请在您的git项目根目录中添加一个子模块
// 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项目或类似项目,请在项目根目录之外的某处(可能在同一级别)克隆分支:
// 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
答案 1 :(得分:0)
构建脚本可能会帮助你:
保留当前Google图书馆项目的位置
编写一个git更新该文件夹的脚本,并在每次构建时运行。使用过时的“flag”文件,脚本可以写入,每天只更新一次文件夹
编写另一个脚本,对于项目文件以外的每个导入文件,将其复制到第二个文件夹
将要使用的项目文件放在第二个文件夹中
删除对主库文件夹的原始引用,然后导入新的第二个文件夹。
Voila,现在您已更新了源文件和修改后的项目文件。如果构建因添加新文件而中断,则可以将修改后的原始文件复制到第二个文件夹,根据需要更改设置。
答案 2 :(得分:0)
对于跟踪更改,您可以使用git子模块,甚至更好 - Cocoapods(如果可能)。此外,您可以使用XCode工作区并将库保留为工作空间内的“并行”项目,而不是将其作为子项目 - 这使我的工作更简单。