我经常坐在颠覆工作副本的中间,我想快速svn status
找出自上次检查后我所做的更改。但是svn status
仅适用于当前文件夹及其子项。 (同样适用于svn up
)
我想快速更改到subversion工作副本的根文件夹,这样我就可以运行svn status
并查看已更改的所有文件,可能是签到或者更新,然后回到原来的工作地点。
答案 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()"/>