簡體   English   中英

svn st,用於svn根目錄

[英]`svn st` for the root svn directory

當我位於一個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

SVN沒有項目的概念。 它具有目錄和文件,您可以根據需要在存儲庫中組織項目。 但是SVN不知道特定目錄是項目的根目錄。

因此,您必須位於正確的目錄中(或將其作為svn st的參數傳遞),以獲取項目的所有更改。

一個簡單的解決方法是將$BASE定義$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM