如何找到给定subversion工作副本的根文件夹

2024-06-26 09:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常坐在一个subversion工作副本的中间,我想做一个快速的svn status来找出自上次签入以来我做了哪些更改。但是svn status只对当前文件夹及其子文件夹有效。(同样适用于svn up

我想要一个快速的方法来更改subversion工作副本的根文件夹,这样我就可以运行一个svn status,查看所有已更改的文件,可能是签入或更新,然后回到以前的工作状态。


Tags: 文件方法文件夹状态status副本svnsubversion
3条回答

在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%

如果使用^{}作为Subversion客户机,则可以在本地使用Git命令与Subversion存储库透明地交互。当您在树中的任何位置使用^{}等命令时,Git会自动显示整个存储库中的挂起。

我的第一个答案是:我写了一个名为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]$ 

相关问题 更多 >