[英]`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
我希望像git
或hg
,我將能夠查看所有已簽出項目的狀態。 我沒有找到任何類似於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.