svn分支而不复制每个子目录
我们项目的箱子看起来像这样:
trunk/foo
trunk/bar
trunk/baz
子目录foo,bar和baz实际上彼此无关,而bar和baz实际上相当庞大。 我如何创建一个只有foo的分支,这样我的分支将如下所示:
branches/branch1/foo
branches/branch2/foo
现在,我正在做的是分支整个树干,然后删除bar和baz,但是我认为这会在合并期间造成问题,因为它会尝试删除bar和baz。 我想要的是它足够聪明,知道我只想和foo一起工作,而不是对酒吧或巴斯做任何事情。
第二个问题,并不重要,如果我想要一个带有foo和bar的分支,如:
branches/branch1/foo
branches/branch1/bar
分支这两个文件夹而不分支其他文件的过程会更困难吗?
编辑:它已经指出,我可以使用svn cp。 这是有效的,但我希望从git svn repo开始工作,并且据我所知,最接近的模拟git-svn必须是svn分支,它会自动处理复制。 不幸的是,我找不到任何可以让我分支一个特定子目录的选项。
一个巨大的svn仓库通常由许多git仓库代表。 你应该使用git svn init .. -t trunk/foo -b branches/branch1/foo -b branches/branch1/foo
等。注意: init
,不是clone
。 然后编辑.git/config
:
[svn-remote "foo"]
url = http://server.org/svn
fetch = trunk/foo:refs/remotes/foo/trunk
branches = branches/*/foo:refs/remotes/foo/branches/*
tags = tags/*/foo:refs/remotes/foo/tags/*
然后做git svn fetch
。 另外,您可以指定--ignore-paths
例如忽略docs
目录。
之后, git svn branch
应该做正确的事情。 参见git-svn manual
。
svn副本会很高兴地在文件夹结构中的任何级别上运行。
做就是了:
svn cp trunk/foo branches/branch1/foo
把它想象成一个典型的unix文件系统。
如果branch1尚不存在,您可能需要添加 - 父项到cp行。
在Subversion中分支基本上只是复制文件(但它们不是真正的复制品,因为它们不占用任何空间)。 所以:
svn cp svn://server/repo/trunk/foo svn://server/repo/branches/branch1/foo
如果你不想要,你不需要复制bar
和baz
目录。 或者,您可以复制所有内容(因为复制本质上是免费的)并仅查看您需要的内容:
svn cp svn://server/repo/trunk svn://server/repo/branches/branch1
svn co svn://server/repo/branches/branch1/foo
链接地址: http://www.djcxy.com/p/7187.html