【发布时间】:2010-09-25 21:49:35
【问题描述】:
我有兴趣做以下事情。我想维护一份文档的主副本,然后为该文档创建可能包含少量修改的分支。我希望将本文档分支中的修改与我对主要文档所做的任何更改合并。
就像能够更新“模板”和该模板的实例化一样。 有什么好的工具可以做这样的事情? svn可以吗? (您可以假设文档只是文本文件,没有花哨的格式。)
【问题讨论】:
标签: svn repository
我有兴趣做以下事情。我想维护一份文档的主副本,然后为该文档创建可能包含少量修改的分支。我希望将本文档分支中的修改与我对主要文档所做的任何更改合并。
就像能够更新“模板”和该模板的实例化一样。 有什么好的工具可以做这样的事情? svn可以吗? (您可以假设文档只是文本文件,没有花哨的格式。)
【问题讨论】:
标签: svn repository
是的,svn 可以做到这一点。对于 svn 来说,无论是管理源代码还是其他 txt 文件都没有区别。如果您在文档底部添加 2 个分支,这可能并不理想,但我认为任何 SCM 系统都会在这种情况下发生冲突。
【讨论】:
git 也可能是一个选项。看看A successful Git branching model。每个“修改过的文档”都可以被视为一个功能分支,而您的“模板”位于trunk中。
使用 功能分支 也适用于“svn”。
【讨论】:
如果您的版本化文件是二进制文件,而不是文本文件,您将无法将“模板”中的更改合并到分支版本。所有 Microsoft 格式(和 openoffice 压缩文件)都是二进制 blob。我知道的大多数版本控制系统中的合并都是按行粒度完成的。
除此之外是的,这是很有可能的。
svn copy trunk/mydoc.txt branches/branch1/mydoc.txt
svn copy trunk/mydoc.txt branches/branch2/mydoc.txt
如果您稍后在主干中更改您的版本,您可以将更改传播到您的功能分支。
cd branches/branch1
svn merge http://mysvnserver.tld/reponame/trunk/mydoc.txt
svn commit
cd ../..
cd branches/branch2
svn merge http://mysvnserver.tld/reponame/trunk/mydoc.txt
svn commit
这是简化的程序。最好不要在可能的最高级别(分支级别)上分支和合并单个文件。
【讨论】: