尽管以某种方式精通VCS(常规svn,git和git-svn用户),但我似乎无法将这种独特的SVN行为束之高阁。
每当我需要从原本的“干净”状态重命名SVN工作副本中的目录时-即不svn status
返回任何内容且已提交所有其他修改-就像这样(svn文档建议):
svn mv foo bar
svn commit
SVN大声抱怨:
Adding bar
Adding bar/toto
Deleting foo
svn: Commit failed (details follow):
svn: Item '/test/foo' is out of date
如你所愿:
svn update
这使:
C foo
At revision 46.
Summary of conflicts:
Tree conflicts: 1
有树冲突,而没有第三方更改发生。显然,摆脱这种树冲突混乱的唯一方法通常是(来自svn红皮书):
svn resolve --accept working -R .
svn commit
在存储库上远程重命名它,然后更新我的工作副本似乎很不明智:
url=$(svn info | grep -e '^URL:' | sed 's/^URL: //') svn mv $url/foo $url/bar
svn update
是否有一种批准的,更简化的方式来重命名我丢失的文件夹?这种特别令人惊讶的树冲突状态背后的根本原因是什么?