我想创建一个公共svn存储库的私有分支。
通过这个,我的意思是有一个公共的,开源的(codeplex)存储库,我需要自己进行自定义更改。这些更改不会被接受回树中。我想:
我知道git可以做到这一点,但我无法弄清楚如何使用SVN。
如果不可能,我该怎么做上面的某些方面 - 比如在我的存储库中完全取代代码并保留官方树的“干净”副本,我可以很容易地将两棵树分开?
谢谢, 詹姆斯
答案 0 :(得分:9)
此问题的最佳解决方案是Version Control with Subversion部分vendor branches中描述的解决方案。使用SVN export命令将外部SVN托管项目的快照作为供应商丢弃转储到本地SVN工作区。
答案 1 :(得分:5)
Google git-svn。适合我。
答案 2 :(得分:1)
导出要分支的修订,将其导入到您自己的存储库中,然后对其进行处理。稍后您可以将原始导入修订版和头部之间的差异合并到主仓库中。
是的,这是一个拐杖。你为什么不试试git-svn?答案 3 :(得分:1)
你做不到。我已经看到这个问题以两种不同的方式解决了:
使用具有SVN集成的DVCS,如bzr-svn或git-svn。这些集成专门针对您希望保留本地分支但仍能够通过SVN与上游源进行交互的情况而设计。
使用Piston。 Piston自动化将供应商源代码树添加到项目中的过程,以便您可以进行自己的更改,并定期从源代码库中提取和合并更新。
答案 4 :(得分:1)
可以提供帮助的一个工具是svnsync(尽管转移到DVCS,正如其他人所建议的那样其实可能更好)。
答案 5 :(得分:1)
正如其他人所说,使用与Subversion协同工作的分布式版本系统可能是你最好的选择。 git的替代方法是Mercurial,其中一个options,hgsubversion或hgsvn。它实际上是两者之间的个人选择,但如果您是常规的Subversion用户,Mercurial可能更适合。它有一个类似于Subversion的命令行,如果你在Windows上,它的TortoiseHg类似于TortoiseSVN。
答案 6 :(得分:0)
我想你已经回答了两次问题。
使用DVCS或保留一份干净的副本并合并到您自己的svn回购中。
答案 7 :(得分:0)
另一个工具是tailor
(http://wiki.darcs.net/Tailor)。它可以在许多类型的repositiories之间移动更改。如果您习惯于颠覆,您甚至可以创建一个本地svn服务器,其中包含来自上游和私有更改的更改,使用codeplex的更改来更新本地服务器。