我正在使用TortoiseSVN,我有一个以这种方式组织的SVN存储库:
folder1
folder2
trunk
tag
branches
folder3
trunk
tag
branches
folder4
folder5
trunk
tag
branches
我想知道是否有办法只检出主干目录,将整个树保持在版本控制之下:
folder1
folder2
trunk
folder3
trunk
folder4
folder5
trunk
通过这种方式,我可以在folder1
上使用单个更新命令更新所有中继,而无需更新可能充满数据的标记和分支。
答案 0 :(得分:3)
这个问题一直困扰着我,我破解了它:)
svn up --set-depth empty branches
svn up --set-depth empty trunk
父目录中对svn update
的后续调用不会更新这些目录,也不会调用svn commit
。
如果你要重新检查一下,你可以:
svn co --depth empty <folder1 svn url>
cd folder1
svn up --depth empty folder2
cd folder2
svn up trunk
然后重复每个folder3
和folder4
答案 1 :(得分:1)
最接近且最简单的可能是sparse checkouts。那会给你
folder1
folder2
trunk
A
B
C
...
tag
branch
folder3
trunk
A
B
C
...
tag
branch
folder4
folder5
trunk
A
B
C
...
tag
branch
并且能够一次性更新所有内容。
或者您使用externals执行此操作。在您的存储库中创建一个新文件夹,除了引用其他中继之外什么都不做。
答案 2 :(得分:1)
有两种方法可以做到这一点。
svn switch svn://foo/bar/path/to/empty/dir folder1/folder2/tags svn switch svn://foo/bar/path/to/empty/dir folder1/folder2/branches
等
答案 3 :(得分:1)
请注意,稀疏结帐通常是要走的路,但Subversion不允许您与 - reintegrate 选项合并。
这可能听起来像是一个小问题(例如,如果你是单个用户),但你真的应该考虑它并使用适当的存储库结构。
您提到的存储库结构也不允许一次标记或分支所有项目。