首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不显示svn :外部svn状态

不显示svn :外部svn状态
EN

Stack Overflow用户
提问于 2010-05-07 22:36:48
回答 3查看 7.8K关注 0票数 23

我已经在我的存储库中创建了一个svn:external。除了svn status命令的输出之外,一切都很正常。在输出中有很多我不需要的信息:

代码语言:javascript
复制
$ svn st
X      lib

Performing status on external item at 'lib'

我可以运行svn st --ignore-externals -q,我可以将这一行放在一个小脚本中,但也许有更好的解决方案。如何在不查看外部信息的情况下查看我的工作副本的状态?

EN

回答 3

Stack Overflow用户

发布于 2010-05-07 23:48:41

这似乎是忽略出现在svn status输出中的外部变量的正确方法。

参考资料:

http://svnbook.red-bean.com/en/1.4/svn.ref.svn.html

票数 4
EN

Stack Overflow用户

发布于 2012-02-09 01:53:40

搜索会找到一个用脚本覆盖svn命令的clever Bash script实现。然而,我想在Windows中做一些类似的事情。从PATH中删除svn目录,然后创建一个名为svn.bat的批处理脚本,并将其放入PATH中的某个位置(如C:\Windows):

代码语言:javascript
复制
@echo off
setlocal

if (%1)==(st) goto :match
if (%1)==(stat) goto :match
if (%1)==(status) goto :match

:: If not running Status command, just pass the args along
"C:\Program Files\SlikSvn\bin\svn" %*
goto :eof

:match

:: Init variables
set svnargs1=
set svnargs2=--ignore-externals

:: Loop through arguments
:loop
if "%~1"=="" goto :cont

:: Look for ignore externals flag
if "%~1"=="--examine-externals" (
    set svnargs2=
) else (
    if "%~1"=="-h" (
        set svnargs2=
    )

    set svnargs1=%svnargs1% %1%
)


shift & goto :loop
:cont

:: Call svn
"C:\Program Files\SlikSvn\bin\svn" %svnargs1% %svnargs2%
票数 0
EN

Stack Overflow用户

发布于 2012-10-31 15:34:18

我认为还没有真正解决这个问题的答案,因为如果对svn:externals的一部分进行了更改,那么它们当然应该显示出来。这对于真正的外部存储库来说是没有意义的。但我使用svn:externals将同一存储库中的通用构建文件夹添加到项目中(因为不存在模块的通用层次结构)。我不想使用选项--ignore-externals -q,因为我丢失了有关未添加的文件和在此项目中完成的常规构建脚本中的更改的信息(我可能想要提交)。我的解决方案是为subversion java命令行实现svnkit打补丁。

代码语言:javascript
复制
AbstractSVNCommand.registerCommand(new SVNStatusCommand());
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final PrintStream stream = new PrintStream(bos);

final SVNCommandLine commandLine = new SVNCommandLine();
commandLine.init(new String[] { "status", "PATH..." });

final SVNCommandEnvironment env = new SVNCommandEnvironment("mySvn", stream, stream, System.in);
env.init(commandLine);
env.initClientManager();

final SVNStatusCommand svnStatusCall = new SVNStatusCommand();
svnStatusCall.init(env);
svnStatusCall.run();
stream.flush();
String result = new String(bos.toByteArray());

StringBuffer buffer = new StringBuffer();
Scanner scanner = new Scanner(result);
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    if (line.startsWith("X") || line.startsWith("Performing status on external item at")) {
        // ignore this output
    } else if (line.trim().isEmpty() == false) {
        buffer.append(line + "\n");
    }
}

System.out.println(buffer.toString());

这解决了问题,因为外部变量中的更改也用'M‘标记为modified...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2789344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档