[英]How to synchronize a project with svn repository after deletion of local files in xcode?
[英]How to make a fork of an project into a local SVN repository?
如果我喜欢这些更改,我想将它们放入我的本地存储库。
我可以采取哪些方式来满足这些要求?
开源项目的SVN历史是否可以通过这些方式保存在我的存储库中?
提前致谢。
看看这个StackOverflow主题并回答: 正确的工作流来管理私有的Subversion fork。 我和你的问题非常相似,我将继续使用git-svn [在接受的答案中得到的桥梁]。 另请参阅Git和其他系统 - Git和Subversion
主要方法优势:这种方式您可以始终使用SVN作为“后端”,最终存储库。
我希望这有帮助。 爱与和平,
正如gbjbaanb所建议的那样,你必须使用Vendor Branches并保持纯粹的Subversion
您可以(必须)在书籍工作流程中添加一个小细节:
您可以将上游仓库(/ trunk ???)的一部分链接到您的仓库的供应商分支(使用svn:externals)。 这样你就可以
svn up
, svn log
) 我认为只有SVN才能实现这一目标。 你想要的是某种分散版本控制系统,比如Git或Mercurial。
我不知道你是否已经和其中一个人合作过,但你可以用两者来达到你想要的效果。
这是我的想法的一些步骤(从Mercurial的角度来看,但这与Git完全相同):
hg init
) hg addremove
) hg commit -m "initial commit"
) hg clone /path/to/myrepo .
在空目录中) 您现在可以在这个mercurial克隆中工作并提交它。 但是,永远不要推动原始mercurial存储库中的更改非常重要。
要更新SVN存储库,请按照下列步骤操作:
svn update
hg addremove; hg commit -m "svn update"
hg addremove; hg commit -m "svn update"
hg pull; hg merge; hg commit -m "merging svn update"
hg pull; hg merge; hg commit -m "merging svn update"
为此,工作目录必须是干净的,即必须提交所有更改。
基本上,我们正在做的是使用Mercurial作为SVN存储库的某种代理。 您可以提交到本地Mercurial克隆,而无需修改原始源并仍然从SVN更新,然后在本地Mercurial克隆中合并这些更改。
我不知道如何使用Git重现这些步骤,但我知道它也是可能的。 如果您了解其中一个,您甚至可以使用任何其他dvcs。
我完全同意这个解决方案有点复杂,但我从来没有找到一种更简单的方法来实现这一点。 我这样工作了9个月,以CVS存储库为源,从未遇到过问题。
但是,如果您从未听说过dvcs,git或mercurial,我强烈建议您阅读一些文档,因为这些步骤非常复杂,而且事情可能会很快出错。
希望这有帮助。
编辑:
您也可以使用SVN外部 ,但您将无法查看并选择要在存储库中导入的修改 。
您必须在目录上设置svn:externals属性:
svn propedit externals adirectory
这将打开一个编辑器,让您编辑adirectory
目录的外部。 在这里,您为每个外部存储库添加一行,以便在此目录中签出(对于每一行):
path/where/tocheckout http://svn.example.com/repos/project
下次您将进行更新时,将在给定目录中检查svn存储库,其中包含完整历史记录。
(自从我使用svn:externals以来,很长一段时间,也许有些解释是错误的,但它可能足以让人眼前一亮)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.