1

通常,当我将内容提交到我们的存储库时,我会执行 svn ci file1 file2 file3 etc -m “这是关于我正在提交的更改的消息。”

我目前正在另一台计算机上工作(它恰好运行 Fedora 而不是我通常的 Ubuntu),当我这样做时,它犹豫不决,说

svn: Commit failed (details follow):
svn: '/home/[path]/[word]' is not under version control

其中 [word] 是我的提交消息的第二个单词。(例如,在上面的示例中(“这是一条消息...”),“是”)。

我不认为 SVN 在 Fedora 中的工作方式不同?
什么可能导致这个问题,我需要做什么才能在这里使用 -m 标志?

4

4 回答 4

3

我遇到了同样的问题。如果我尝试直接在终端提交,那么-m工作正常。但是,如果我尝试使用脚本提交,那么它只会从评论字符串中获取第一个单词。即使使用该--non-interactive选项也无济于事。

最后,作为一种解决方法,在脚本中,我创建了一个包含注释字符串的临时文件,然后使用--file选项为提交命令提供注释。

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]}"
...
于 2012-12-12T10:35:58.350 回答
0

在标准的 Unix 命令中,参数应该放在文件名之前:

$ svn ci -m "This is a message about the changes I'm committing." file1 file2 file3 etc.

这可能不是两个系统之间的 Subversion 差异,而是使用的 shell。shell 解析命令,并将文件和参数发送到命令。这样,shell 处理文件扩展。

尝试将-m参数放在文件名之前。确保在提交消息周围使用引号。

于 2012-08-16T02:22:06.563 回答
0

评论-m应该先...

$ svn ci -m "changes" file1 file2 file3 
于 2012-08-16T05:34:27.763 回答
0

问题是 svn 是一个调用 /usr/bin/svn 的函数,同时不允许提交者在签入时使用计算机的共享用户名,作为问责制措施。

它仍然很烦人,但是 /usr/bin/svn 可以使用,并且提交者在不使用 -m 标志后仍然可以向 nano 输入消息。

感谢@David_W 提出“type svn”的建议,它揭示了有问题的功能。

于 2012-08-16T15:00:42.960 回答