Как я могу найти корневую папку данной рабочей копии подрывной работы
Довольно часто я сижу посреди рабочей копии подрывной работы, и я хочу сделать быстрый svn status
, чтобы узнать, какие изменения я внес с момента последней проверки. Однако svn status
работает только с текущей папкой и дочерними. (Аналогично и для svn up
)
Я бы хотел быстро перейти в корневую папку рабочей копии subversion, чтобы я мог запустить svn status
и увидеть все измененные файлы, возможно, проверку или обновление, а затем вернуться к работе где я был раньше.
Ответы
Ответ 1
Вот мой первый ответ: я написал немного bash script под названием svnbase
:
#!/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]$
Ответ 2
Если вы используете git-svn
в качестве своего клиента Subversion, вы можете прозрачно взаимодействовать с репозиторием Subversion, используя команды Git локально. Git автоматически показывает, что вы ожидаете ответа на весь репозиторий, когда вы используете команды типа git status
в любом месте дерева.
Ответ 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%
Ответ 4
Это невозможно. SVN может быть проверен с любой глубины, и любой субдилер действует как новая проверка.
edit: svnbase script в предварительных комментариях, но это не точно.
Ответ 5
Фактически, если вы заглянете в свой файл .svn/entries, вы найдете базу, указанную там, как правило, вокруг строки 6. В любом случае формат вашего svn-url даст вам некоторые важные подсказки: P
О да, я взял на себя смелость смотреть, и svn info
также расскажет вам.
... вздох, это не то, что вы просили. Мне нравится решение в первом ответе: P
Ответ 6
В linux с svn, версия 1.9.3 (r1718519), я запускаю это:
svn info --show-item wc-root