为什么 subversion 在提交时会切换到父目录
当我从 unix 命令行执行 svn commit 时,它会在打开编辑器之前切换到父目录。当我进行 shell escape 时,这会引起很大的混乱,因为我不在我认为的地方。
这种行为的原因是什么?
(编辑)下面的屏幕截图显示这种情况发生在最低目录中,而没有发生在最顶层目录
svn --version svn, version 1.5.5 (r34862)
test: svn checkout file:///export/home/svn/xxx/a
A a/b
A a/b/c
A a/b/c/new
Checked out revision 8882.
test: cd a/b/c
test: pwd
/home/geretz/test/a/b/c
test: echo changed > new
test: svn commit
--This line, and those below, will be ignored--
M c/new
~
~
:!pwd
/home/geretz/test/a/b
Hit ENTER or type command to continue
中止编辑会话,尝试从顶级目录提交
test: pwd
/home/geretz/test/a/b/c
test: cd ../..
test: pwd
/home/geretz/test/a
test: svn commit
--This line, and those below, will be ignored--
M b/c/new
~
~
:!pwd
/home/geretz/test/a
Hit ENTER or type command to continue
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您浏览 svn 源代码,您会发现
svn commit
是由 http://svn.apache.org/repos/asf/subversion/branches/1.5.x/subversion/svn/commit-cmd.c。负责将路径拆分为“basename”和“dirname”的实际函数是svn_wc_get_actual_target
。该函数在 http:// 中声明svn.apache.org/repos/asf/subversion/branches/1.5.x/subversion/include/svn_wc.h 并有以下评论:最后在文件 http://svn.apache.org/repos /asf/subversion/branches/1.5.x/subversion/libsvn_wc/update_editor.c 我们可以看到以下评论:
If you browse svn sources, you find that
svn commit
is handled bysvn_cl__commit
function in http://svn.apache.org/repos/asf/subversion/branches/1.5.x/subversion/svn/commit-cmd.c. Actual function which takes care about splitting pathes to 'basename' and 'dirname' issvn_wc_get_actual_target
. This function is declared in http://svn.apache.org/repos/asf/subversion/branches/1.5.x/subversion/include/svn_wc.h and has following comment:And finally in file http://svn.apache.org/repos/asf/subversion/branches/1.5.x/subversion/libsvn_wc/update_editor.c we can see following comment: