Subversion:如何将项目的单独版本维护为另一个项目的子目录

时间:2010-10-11 21:32:14

标签: svn tortoisesvn branch

我想将一个subversion项目(/ signature_paper)复制到另一个subversion项目(/ thesis)的子目录中。我将在/ thesis / signature_paper中进行更改,这些更改不会再回到原始签名文件中。同时,我希望/ thesis / signature_paper能够获取/ signature_paper中所做的大部分或全部更改。

理想情况下,我希望将其作为单个颠覆项目进行检查,即svn co http://blah/thesis论文为我提供了全部内容,包括/ thesis / signature_paper。

我不确定分支和定期合并来自/ signature_paper是否可以为我做到这一点,也不知道如何做到这一点。几年前我在Clearcase中使用过分支,但从未建立过我自己的分支。我最初没有使用/ trunk设计就设置了我们的svn存储库。我通常使用命令行客户端,但如果有帮助,可以使用Tortoise。

有没有简单的方法来实现这一目标?我上次有这种需要时定期手动重新制作一个类似的项目(将一篇不断发展的论文提取到一个更大的文档中),这真的很痛苦。

编辑: 嗯,那么只做以下事情就可以了吗?     %cd论文
    %svn co blah / signature_paper
    % 找 。 -name .svn -exec rm -rf {} \;
    %svn添加signature_paper

然后使用svn merge从/ signature_paper到/ thesis / signature_paper?

2 个答案:

答案 0 :(得分:2)

确保对要合并的更改进行“单个”提交。 How to merge only specific revisions解释了如何“同步”您的文档。将文本拆分为几个子文档可能会有所帮助。 Subversion强制没有目录布局,您可以自由地创建最适合您的目录布局。

最简单的方法是将常用文本部分隔离到单独的文件中,放在公共文件夹中。这些段落包含在您的论文或论文的\ input {name}中。

如果您不能或不想维护公共文件,则需要合并论文和论文以交换内容。我有两个大文件。由于您可能没有同步所有内容,因此要合并的更改将进入“修订版”。换句话说,您的工作副本是最新的。您应用更改并进行提交。接下来,将此精确修订与其他文档合并。

-trunk
--thesis
--paper1
--paper2
- 普通

答案 1 :(得分:2)

您可以使用svn:externals进行设置,如果您不修订修订号,则会使用结帐的其余部分进行更新。请确保不要从外部目录提交(与update相反,commit不提交svn:externals我相信,但您可能想要测试

示例,有关详细信息,请参阅the documentation on svn:externals

$ svn co http://blah/thesis
$ cd thesis
$ svn ps svn:externals 'signatur_paper http://blah/signature_paper' .
$ svn up
Fetching external item into 'signature_paper'
A    signature_paper/
....
Updated external to revision N.

Updated to revision N.
$ svn info .
....
URL: http://blah/thesis
.... 
$ svn info signature_paper
....
URL: http://blah/signature_paper
.... 

更新提取外部:

$ svn up
Fetching external item into 'signature_paper'
External at revision N.

At revision N.

除非您在目录中明确这样做,否则提交不会从外部提交:

$ touch signature_paper/test
$ svn add signature_paper/test
A         signature_paper/test
$ svn ci -m'test'
//nothing happens.......
$ svn ci -m'test' signature_paper/
Adding         test
Transmitting file data .
Committed revision N.
相关问题