我有一个沙箱,它在存储库中的目录与直接来自存储库的目录混合在一起。 svn status --ignore-externals
将告诉我存储库中文件的状态。做相反的好方法是什么?
例如,如果我有
$ svn status
X foo
M bar/local.cpp
Performing status on external item at 'foo'
M foo/external.cpp
所以,忽略外部,我有
$ svn status --ignore-externals
X foo
M bar/local.cpp
我正在寻找像
这样的东西$ svn status --ignore-local
X foo
Performing status on external item at 'foo'
M foo/external.cpp
仅列出外部存储库中的文件。
这可能最终会出现在shell或Perl脚本中,所以可以接受相当复杂的东西。
我知道我可以做svn status foo
,但我的实际案例有十几个外部,而且这个数字随着时间的推移而逐渐增长。硬编码列表不是一个好的解决方案。
看起来我可以只查找字符串Performing status
并忽略它之前的所有内容。 (我不关心X
行。)这是我可以依赖的顺序吗?
编辑:为了澄清,我正在寻找外部存储库中已在我的沙箱中修改过的文件。我不在乎文件是否也在外部存储库中被修改过。
答案 0 :(得分:0)
svn st
-u
命令的svn status
选项和svn propget
命令才能在代码中对可变外部列表进行操作工作副本中的样本(对于HEAD类型的外部),具有外部,在repo中更新以及WC中的本地修改
trunk>svn st
? Core\core+.txt
M Core\core.txt
X Extensions\Mod1
X Extensions\Mod2
Performing status on external item at 'Extensions\Mod1':
Performing status on external item at 'Extensions\Mod2':
存储库中的' Extensions \ Mod *`的 更改,但您错过了
trunk>svn st -u
? Core\core+.txt
M 4 Core\core.txt
X Extensions\Mod1
X Extensions\Mod2
Status against revision: 5
Performing status on external item at 'Extensions\Mod1':
* Extensions\Mod1\file3.txt
* 4 Extensions\Mod1
Status against revision: 5
Performing status on external item at 'Extensions\Mod2':
* 4 Extensions\Mod2\file1.txt
Status against revision: 5
相当复杂的情况:两个不同的挂载点,一个点的一组外部
WC>svn pg svn:externals -R
trunk\Core - ^/Vendor/Core+ Core+
trunk\Extensions - ^/Vendor/Lib1 Mod1
^/Vendor/Lib2 Mod2
^/Vendor/Lib3 Mod3
为了避免"嘈杂"输出(因为它将用于' Externsions \'节点 - 带有前导X的行)
WC>svn st -u trunk/Extensions
Status against revision: 7
X trunk\Extensions\Mod1
X trunk\Extensions\Mod2
Status against revision: 7
Performing status on external item at 'trunk\Extensions\Mod1':
* trunk\Extensions\Mod1\file3.txt
* 4 trunk\Extensions\Mod1
Status against revision: 7
Performing status on external item at 'trunk\Extensions\Mod2':
* 4 trunk\Extensions\Mod2\file1.txt
Status against revision: 7
您必须直接请求状态直接外部dir,您必须从pg
输出,fe( trunk\Extensions
- ^ / Vendor / Lib1组合的完整路径的 Mod1
强>)
>svn st -u trunk\Extensions\Mod1
* trunk\Extensions\Mod1\file3.txt
* 4 trunk\Extensions\Mod1
Status against revision: 8
以及"针对修订的状态"之前的任何输出表示现有的存储库端更改:对于未触及的外部输出将是
>svn st -u trunk\Extensions\Mod3
Status against revision: 8