`svn st`为root svn目录

时间:2011-03-08 08:19:46

标签: svn version-control

当我在subversion项目的子目录中时,svn st之类的命令只能在当前工作目录上运行。例如:

$ svn co svn://example.com/trunk example
$ cd example
$ vi #editing files
$ svn st
M    base.c
M    s/inner.c
$ cd s
$ svn st
M    inner.c

我希望如此,就像githg一样,我将能够看到所有已检出项目的状态。我没有找到与hg -C类似的任何选项,因此我可以这样做:

$ svn -C ../
M    base.c
M    s/inner.c

2 个答案:

答案 0 :(得分:0)

SVN没有项目概念。它有目录和文件,您可以根据需要在存储库中组织项目。但SVN并不知道某个特定目录是项目的根目录。

因此,您必须位于正确的目录中(或将其作为svn st的参数传递)才能完成项目的所有更改。

答案 1 :(得分:0)

一个简单的解决方法是将$BASE定义为根签出目录,然后使用svn st $BASE。当您处理两个subversion子目录时,它将无法工作。

我提出了以下bash脚本来做更多或更少我正在寻找的内容,请注意pwd周围的反引号:

$ cat svnb
#!/bin/sh
PREVDIR=`pwd`
while true; do
    if [ ! -d .svn ]; then break; fi
    PREVDIR=`pwd`
    cd ..
    if [ "`pwd`" == "$PREVDIR" ]; then break; fi
done
cd "$PREVDIR"
if [ -d .svn ]; then svn $@;
else echo Not in an version controlled directory
fi

用法示例:

$ cd example/s
$ svnb st
M    base.c
M    s/inner.c
$ cd / && svnb st
Not in an version controlled directory