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

时间:2009-08-07 01:01:20

标签: svn repository

我经常坐在颠覆工作副本的中间,我想快速svn status找出自上次检查后我所做的更改。但是svn status仅适用于当前文件夹及其子项。 (同样适用于svn up

我想快速更改到subversion工作副本的根文件夹,这样我就可以运行svn status并查看已更改的所有文件,可能是签到或者更新,然后回到原来的工作地点。

8 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:7)

如果您使用git-svn作为Subversion客户端,那么您可以在本地使用Git命令与Subversion存储库进行透明交互。当您在树中的任何位置使用git status等命令时,Git会自动显示整个存储库中的待处理状态。

答案 2 :(得分:7)

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

答案 3 :(得分:4)

在Linux上使用svn,版本1.9.3(r1718519),我运行这个: svn info --show-item wc-root

答案 4 :(得分:2)

这是不可能的。 SVN可以从任何深度检出,任何子目录都像全新的结账。

编辑:prev注释中的svnbase脚本有效,但不准确。

答案 5 :(得分:2)

实际上,如果你查看你的.svn / entries文件,你会发现通常在第6行附近列出的基数。无论如何,你的svn url的格式会给你一些重要的线索:P 哦,是的,我冒昧地看着,svn info也会告诉你。

......叹息,这不是你问的问题。我喜欢第一个答案中的解决方案:P

答案 6 :(得分:0)

在工作副本的任何深度处尝试以下命令:

svn info . --show-item wc-root --no-newline

答案 7 :(得分:0)

这是我的解决方案,是这里各种解决方案的混合。它是用PowerShell编写的,这是我正在编写的PowerShell模块所需的。

<html:text property="cicPF" maxlength="9" style="text-transform: uppercase;" onfocus="disableIfeFields()"/>