1

我需要使用特定文件的名称作为目录名称,并将该文件移动到全新的目录中。

我的回购现在看起来像这样:

file1
file2
dir1/
  dir1file1
search
source_code2

我需要得到这个:

file1
file2
dir1/
  dir1file1
search/
  search_contents
source_code2

我需要做的操作是:

 mv search search_contents
 rm search
 mkdir search
 mv search_contents search/

我想我可以这样做:

 svn move search search_contents
 svn del search
 mkdir search
 svn add search
 svn move search_contents search/

是否有意义?

svn 如何处理单个文件名上的多个命令?(不做提交)或者我应该做中间提交?

4

2 回答 2

2

如果您尝试在中间不提交和更新的情况下执行此操作,您将收到如下消息:

svn:不能用不同类型的节点替换“搜索”;在添加“搜索”之前,必须提交删除并更新父级

只需将您的 svn 命令列表更改为:

svn move search search_contents 
svn commit -m "Renamed file"
svn up
mkdir search
svn add search
svn mv search_contents search
svn commit -m "done"
于 2012-04-28T18:09:05.273 回答
0

事实证明,这些步骤可以在一次提交中完成:

# variant 1
svn move search search-newname
mkdir search
svn add search
svn move search-newname search/search
svn commit -m "magic"

# variant 2
svn delete search
mkdir search
svn add search
svn copy "^/search@3" search/
svn commit -m "more magic"

事情是我不确定,我不想搞砸回购,这个答案的功劳在 irc.freenode.net 上的#svn 频道上是默认的

另外,我要感谢 danilsh 和 wayita 提到 svnmucc。svnmucc是一个可以将多个命令组合在一个列表中的工具(cp、mv、rm 等)

于 2012-04-30T21:16:43.477 回答