如果 success/fail,svn 会合并 return 一个 return 代码吗?
Does svn merge return a return code if success/fail?
我正在使用以下 python 命令自动合并和提交文件
p = subprocess.Popen("svn merge ...")
p.communicate()
if(no conflict)
p = subprocess.Popen("svn commit..."
else
Abort script
如果发生冲突,停止脚本的最佳方法是什么?如果可能的话,我也想抑制合并输出。
如果有任何合并冲突,svn merge
会这样提示你:
Conflict discovered in 'foo'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
您可以使用 --non-interactive
标志跳过提示:
svn merge --non-interactive URL WC
(请注意,--not-interactive
也可用于其他 SVN 命令。)
这将允许合并在没有用户输入的情况下继续,但会标记任何有冲突的文件;在提交之前,您必须手动解决与 svn resolve
的冲突。
您还可以使用 --accept
选项:
svn merge --accept postpone URL WC
这将给出基本相同的最终结果。*
您可以使用 --quiet
标志抑制输出。
不幸的是,SVN 客户端不会将有冲突的合并视为失败,因此它以零状态退出。合并后可以运行svn status
查看是否有文件冲突,例如:
M bar
C foo
D qux
或者,您可以尝试使用 SWIG bindings to the C API, which should allow you to do more granular error checking. There is also PySVN,据说它比 SVN 提供的绑定更 Pythonic。
* 我会使用 --non-interactive
而不是 --accept
因为 --non-interactive
会抑制 所有 提示,而不仅仅是那些冲突提示。例如,如果您没有为用户 运行 保存您的脚本的凭据,--non-interactive
将导致合并立即失败,而如果您使用 --accept
,则会提示您输入密码,您的脚本将挂起。
我正在使用以下 python 命令自动合并和提交文件
p = subprocess.Popen("svn merge ...")
p.communicate()
if(no conflict)
p = subprocess.Popen("svn commit..."
else
Abort script
如果发生冲突,停止脚本的最佳方法是什么?如果可能的话,我也想抑制合并输出。
svn merge
会这样提示你:
Conflict discovered in 'foo'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
您可以使用 --non-interactive
标志跳过提示:
svn merge --non-interactive URL WC
(请注意,--not-interactive
也可用于其他 SVN 命令。)
这将允许合并在没有用户输入的情况下继续,但会标记任何有冲突的文件;在提交之前,您必须手动解决与 svn resolve
的冲突。
您还可以使用 --accept
选项:
svn merge --accept postpone URL WC
这将给出基本相同的最终结果。*
您可以使用 --quiet
标志抑制输出。
不幸的是,SVN 客户端不会将有冲突的合并视为失败,因此它以零状态退出。合并后可以运行svn status
查看是否有文件冲突,例如:
M bar
C foo
D qux
或者,您可以尝试使用 SWIG bindings to the C API, which should allow you to do more granular error checking. There is also PySVN,据说它比 SVN 提供的绑定更 Pythonic。
* 我会使用 --non-interactive
而不是 --accept
因为 --non-interactive
会抑制 所有 提示,而不仅仅是那些冲突提示。例如,如果您没有为用户 运行 保存您的脚本的凭据,--non-interactive
将导致合并立即失败,而如果您使用 --accept
,则会提示您输入密码,您的脚本将挂起。