是否有列出 SVN 冲突的命令?

是否有人知道一个 SVN 命令来列出回购和工作副本之间的当前冲突?

谢谢

88011 次浏览

你可以试试 svn merge -r <revision> --dry-run,看看会发生什么。

也许可以使用 svn merge --dryrun,同时指定存储库 URL,并在最新更新的版本之后进行所有修订。

例如,如果你现在的 WC 是基于147修订版,这个可以做到:

svn merge -r 148:HEAD http://url.to.repo/repo/

我自己什么都没做过,所以你得自己试试。

If you have already merged you can use

svn status

看到一个大写的“ C”表示冲突,但通常你不应该在你的工作副本中看到这种类型。

在 Linux 上,如果您只想看到冲突,那么可以通过 grep 管道显示状态。

svn status | grep -P '^(?=.{0,6}C)'

如果您从 http://betterthangrep.com/获得了 ack,可以执行以下操作

svn st | ack '^C'

使用 grep!

svn st | grep '^C'

在 Mac 上

$ svn status | grep -e '^!'

did the job

Grep 的人来了:

用法: grep [-abcDEFGHhliJLlmnOoqRSsUVvwxZ ][-A num ][-B num ][-C [ num ]] [-e pattern ][-f file ][—— binary-files = value ][—— color = when ] [—— context [ = num ]][—— directory = action ][—— label ][—— line-buffer ] [—— null ][ pattern ][ file... ]

For Windows PowerShell use:

svn status | sls -Pattern '^(?=.{0,6}C)'

如果没有合并或更新文件,请使用以下命令

svn status --show-updates | grep -P '.*(?=.*M)(?=.*\*).*'

简而言之

svn st -u | grep -P '.*(?=.*M)(?=.*\*).*'

细节
在使用 svn update更新文件之前,SVN 不会标记冲突(C)状态。
Until then statuses are shown like below

+---+------+---------------+---------------+
| M |      |               | 23246   file1 |
+---+------+---------------+---------------+
|   |      | *             | 23233   file2 |
+---+------+---------------+---------------+
| M |    * | 23233   file3 |               |
+---+------+---------------+---------------+

本地修改
*-远程更新/传入
M 和 *-在 local 和 remote 中修改-< strong > 这是一个冲突,但 svn 还没有标记