当前位置:  开发笔记 > 编程语言 > 正文

在SVN中,如何仅将目录的子目录复制到另一个目录?

如何解决《在SVN中,如何仅将目录的子目录复制到另一个目录?》经验,为你挑选了3个好方法。

通过命令行,我通常这样做:

cp -rRp /path/to/a\_folder/. /path/to/another\_folder

会将a_folder下面的内容复制another_folder.在SVN我需要做同样的事情,但无法搞清楚.我总是最终得到这个:

/path/to/another\_folder/a\_folder

即使我尝试这个,SVN也会抛出:

svn copy file:///path/to/a\_folder/* file:///path/to/another\_folder

它说它不存在.

编辑:

这可能会有所帮助.我的项目的目录结构如下所示:

my_project
  /branches
  /tags
  /trunk
  /vendor
    /1.1

我需要将供应商下的1.1内容放入主干,而不是实际复制1.1文件夹.



1> bendin..:

正如您已经发现的那样,复制到已存在的目标目录将不起作用:

svn cp svn://my_project/vendor/1.1 svn://my_project/trunk

因为trunk已经存在,所以你最终得到:

svn://my_project/trunk/1.1

使用merge有一个不幸的特性,即在引入合并跟踪的1.5之前的subversion中不保留vendor 1.1标记的历史记录.你可能不在乎.在这种情况下,合并将是正确的解决方案:

svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/trunk svn://my_project/vendor/1.1 trunk-wc

阅读此合并的最佳方法是:首先确定必须进行trunk相同的更改vendor/1.1,然后将这些更改应用于给定的工作副本(在本例中也适用于主干).

我应该指出,这次合并将有效地吹走以前在行李箱中的任何东西.因此,如果您已经在主干上进行了本地(非供应商)修改,那么您将只想应用1.1和之前供应商丢弃之间的更改:

svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/vendor/1.0 svn://my_prjoect/vendor/1.1 trunk-wc

如果trunk存在但是是空的,你有两个选择:替换trunk,或者写一个小shell循环:

更换主干看起来像这样:

svn rm svn://my_project/trunk
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk

利用shell(bash):

svn co svn://my_project/trunk trunk
svn co svn://my_project/vendor/1.1 1.1
( cd 1.1
  for x in * ; do
    svn cp $x ../trunk
  done 
)
svn ci trunk



2> Jerub..:

你考虑过使用svn merge吗?

鉴于这样的回购:

trunk/a_folder/foo
trunk/a_folder/bar
trunk/new_folder/baz

使用这些命令合并foo和bar目录:

cd trunk/new_folder
svn merge -r1:HEAD http://svn/repo/trunk/a_folder .



3> dushshantha..:

此链接说明了一种解决方法.

http://svn.haxx.se/users/archive-2004-12/1537.shtml

基本上它说的是如果目标文件夹不存在于仓库中,您将获得目标文件夹中源文件夹的内容.

见下面的例子.您的仓库中不存在07-03-2012文件夹.执行以下命令后,您将在07-03-2012获取HEAD文件夹的内容.

svn cp /HEAD/ /branches/07-03-2012 -m "test"

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有