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

如果你不想要,你不需要复制barbaz目录。 或者,您可以复制所有内容(因为复制本质上是免费的)并仅查看您需要的内容:

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

上一篇: svn branching without copying every subdirectory

下一篇: git svn dcommit without rebasing