我經常坐在顛覆的工作副本的中間,我想快速地做一個svn status
來找出自上次以來我做了哪些更改報到。但svn status
只適用於當前文件夾,它是兒童。 (同樣,對於svn up
太)我怎麼找到給定的顛覆工作副本的根文件夾
我想一個快速的方法來改變Subversion工作拷貝的根文件夾,所以我可以運行svn status
,看到已經改變所有文件,也許簽入或更新,然後回到我以前工作的地方。
我經常坐在顛覆的工作副本的中間,我想快速地做一個svn status
來找出自上次以來我做了哪些更改報到。但svn status
只適用於當前文件夾,它是兒童。 (同樣,對於svn up
太)我怎麼找到給定的顛覆工作副本的根文件夾
我想一個快速的方法來改變Subversion工作拷貝的根文件夾,所以我可以運行svn status
,看到已經改變所有文件,也許簽入或更新,然後回到我以前工作的地方。
下面是我在回答第一次去:我編寫了一個名爲svnbase
一個小bash腳本:
#!/bin/bash -u
# this command outputs the top-most parent of the current folder that is still
# under svn revision control to standard out
# if the current folder is not under svn revision control, nothing is output
# and a non-zero exit value is given
parent=""
grandparent="."
while [ -d "$grandparent/.svn" ]; do
parent=$grandparent
grandparent="$parent/.."
done
if [ ! -z "$parent" ]; then
echo $parent
else
exit 1
fi
所以,現在我可以這樣做:
[~/work/scripts/XXX/code/speech-detection/framework]$ cd $(svnbase)
[~/work/scripts/XXX]$ svn status
? code/speech-detection/framework/output.old
[~/work/scripts/XXX]$ cd -
/home/XXXX/work/scripts/XXX/code/speech-detection/framework
[~/work/scripts/XXX/code/speech-detection/framework]$
這是不可能的。 SVN可以從任何深度檢出,並且任何subdir都可以像全新的結帳一樣。
編輯:svnbase腳本prev評論工作,但它不是精確的。
你是什麼意思? – 2009-08-07 01:14:23
父目錄可能是另一個存儲庫的簽出。 – stepancheg 2009-08-07 16:06:43
如果您使用git-svn
作爲您的Subversion客戶端,那麼您可以在本地使用Git命令透明地與Subversion存儲庫進行交互。當您在樹中的任何地方使用像git status
這樣的命令時,Git會自動顯示您在整個存儲庫中處於待處理狀態。
實際上,如果你看看你的.svn/entries文件,你會發現通常在第6行附近列出的基地。無論如何,你的svn url格式會給你一些重要的線索:P 噢,我冒昧地看着,svn info
也會告訴你。
......嘆了口氣,那不是你問的問題。我喜歡第一個答案解決方案:P
在Windows上:
svn info . |findstr /C:"Working Copy Root Path:"
在Linux上:
svn info . |grep -F "Working Copy Root Path:"
可以分配給使用一個小的字符串操作的變量。 Windows版本:
FOR /F "delims=" %%i IN ('svn info . ^|findstr /C:"Working Copy Root Path:"') DO SET SOME_TEMP_VAR=%%i
SET WORKING_COPY_ROOT=%SOME_TEMP_VAR:~24%
在使用SVN版本1.9.3(r1718519),我跑這本Linux: svn info --show-item wc-root
你的意思是wc-root? 'svn help info'列出了這個選項,它似乎能夠正常工作。 – Adam 2017-03-14 21:01:39
是的,這就是我的意思。我會更新迴應。 – 2017-03-15 11:39:35
下一個合乎邏輯的步驟將是該系列你輸入到命令的集成腳本本身。 – 2009-08-09 00:01:21
如果你喜歡絕對路徑而不是相對路徑,請初始化:'grandparent = $(pwd)',並且每個循環:'grandparent = $(dirname parent)' – 2011-02-08 02:42:16
這隻適用於Subversion版本高達1.6 。版本1.7和更高版本在根文件夾中只有一個'.svn'文件夾。 – ccpizza 2014-03-27 10:36:47