通常当我将东西提交到我们的存储库时,我会这样做svn ci file1 file2 file3 etc -m "这是关于我正在提交的更改的消息。"
我目前正在另一台计算机上工作(它恰好运行的是Fedora而不是我通常的Ubuntu),当我这样做时,它犹豫不决,说
svn: Commit failed (details follow):
svn: '/home/[path]/[word]' is not under version control
其中 [word] 是我的提交消息的第二个单词。(例如,在上面的例子中("这是一条消息..."),"is")。
我不认为SVN在Fedora中的工作方式不同吗?
可能导致此问题的原因是什么,我需要做什么才能在此处使用 -m 标志?
我遇到了同样的问题。如果我尝试直接在终端提交,那么-m
工作正常。但是如果我尝试使用脚本提交,那么它只会从注释字符串中获取第一个单词。即使使用--non-interactive
选项也无济于事。
最后,作为解决方法,在脚本中,我创建了一个包含注释字符串的临时文件--file
然后使用选项为 commit 命令提供注释。
echo ${COMMENT[$i]} > .tempistan
if [ -n "${FILES_TO_COMMIT[$i]}" ]; then
svn_cmd="/usr/bin/svn --non-interactive commit --file .tempistan ${FILES_TO_COMMIT[$i]}"
...
在标准的 Unix 命令中,参数应该放在文件名之前:
$ svn ci -m "This is a message about the changes I'm committing." file1 file2 file3 etc.
两个系统之间的 Subversion 可能没有区别,而是使用的 shell。shell 分析命令,并将文件和参数发送到命令。这样,shell 就可以处理文件扩展。
尝试将 -m
参数放在文件名之前。确保在提交消息两边使用引号。
带有-m
的评论应该排在第一位...
$ svn ci -m "changes" file1 file2 file3
问题是 svn 是一个调用/usr/bin/svn 的函数,同时不允许提交者在签入时使用计算机的共享用户名,作为一种问责措施。
它仍然很烦人,但是可以使用/usr/bin/svn,并且在不使用 -m 标志后,提交者仍然可以在 nano 中键入消息。
感谢@David_W建议"svn型",它揭示了有问题的功能。