Вопрос
Что означают коды результатов в SVN?Мне нужна краткая справка.
Решение
Для получения дополнительной информации смотрите SVNBook: "Состояние файлов и каталогов рабочей копии".
Общие статусы:
U:Рабочий файл был обновлен
G:Изменения в репозитории были автоматически объединены в рабочую копию
M:Рабочая копия изменена
C:Этот файл конфликтует с версией в репозитории
?:Этот файл не находится под контролем версий
!:Этот файл находится под контролем версий, но отсутствует или неполон
A:Этот файл будет добавлен в систему управления версиями (после фиксации)
А+:Этот файл будет перемещен (после фиксации)
D:Этот файл будет удален (после фиксации)
S:Это означает, что файл или каталог был переключен с пути остальной рабочей копии (с помощью svn switch) на ветвь
Я:Проигнорированный
X:Внешнее определение
~:Изменен тип
R:Элемент был заменен в вашей рабочей копии.Это означает, что файл был запланирован к удалению, а затем на его место было запланировано добавление нового файла с тем же именем.
L :Элемент заблокирован
E:Элемент существовал в том виде, в каком он был бы создан при обновлении svn.
Другие советы
Также обратите внимание, что код результата во втором столбце ссылается на свойства файла.Например:
U filename.1
U filename.2
UU filename.3
имя файла.1:файл был обновлен
имя файла.2:свойство или свойства в файле (например, svn: keywords) были обновлены
имя файла.3:и файл, и его свойства были обновлены
Вы всегда можете получить список, выполнив:
svn status --help
Существует также статус "E"
E = Файл существовал до обновления
Это может произойти, если вы вручную создали папку, которая была бы создана при выполнении обновления.
Я хочу кое-что сказать о статусе "G",
G:Изменения в репозитории были автоматически объединены в рабочую копию
Я думаю, что приведенное выше определение не является четким, оно может вызвать небольшую путаницу, потому что все файлы автоматически объединяются в рабочую копию, правильным должно быть:
U = элемент (U), привязанный к версии репозитория
G = локальные изменения элемента, внесенные в репозиторий
C = локальные изменения элемента (C), связанные с репозиторием
D = элемент (D), удаленный из рабочей копии.
A = элемент (A), перенесенный в рабочую копию
Обычно я использую svn через графический интерфейс, будь то моя IDE или клиент.Из-за этого я никогда не могу запомнить коды, когда мне приходится прибегать к командной строке.
Я нахожу эту шпаргалку большим подспорьем:Шпаргалка по Подрывной деятельности
Взгляните на справочник по Subversion: "Состояние файлов и каталогов рабочей копии"
Настоятельно рекомендуется всем, кто делает практически все, что угодно, с SVN.
Столбцы состояния SVN
$ svn status
L index.html
Выходные данные команды разбиты на шесть столбцов, но это не очевидно, потому что иногда столбцы пусты.Возможно, было бы разумнее обозначить пустые столбцы тире, таким образом ls -l
делает, а не ничего.Тогда, например, L index.html
было бы похоже --L--- index.html
, что делает очевидным, что единственная информация, которой мы располагаем, находится в третьем столбце, посвященном блокировке.В любом случае, как только вы это узнаете, это начинает приобретать больший смысл.
Первый столбец статуса SVN:A, D, M, R, C, X, I, ?, !, ~
Первый столбец указывает, что элемент был добавлен, удален или иным образом изменен.
Никаких изменений.
A
Элемент запланирован к добавлению.
D
Элемент запланирован к удалению.
M
Элемент был изменен.
R
Элемент был заменен в вашей рабочей копии.Это означает, что файл был запланирован к удалению, а затем на его место было запланировано добавление нового файла с тем же именем.
C
Содержимое (в отличие от свойств) элемента конфликтует с обновлениями, полученными из репозитория.
X
Элемент связан с определением внешних элементов.
I
Элемент игнорируется (например,со свойством svn:игнорировать).
?
Элемент не находится под контролем версий.
!
Элемент отсутствует (например,вы переместили или удалили его без использования svn).Это также указывает на то, что каталог неполон (проверка или обновление были прерваны).
~
Элемент имеет версию как объект одного типа (файл, каталог, ссылка), но был заменен объектом другого типа.
Статус SVN второй столбец:M, C
Во втором столбце указывается статус свойств файла или каталога.
Никаких изменений.
M
Свойства этого элемента были изменены.
C
Свойства для этого элемента конфликтуют с обновлениями свойств, полученными из репозитория.
Статус SVN третий столбец:L
Третий столбец заполняется только в том случае, если каталог рабочей копии заблокирован (обычно для его очистки достаточно очистки svn).
Элемент не заблокирован.
L
Элемент заблокирован.
Статус SVN четвертый столбец:+
Четвертый столбец заполняется только в том случае, если элемент запланирован для добавления с хронологией.
Нет истории, запланированной с фиксацией.
+
История запланирована с фиксацией.
Статус SVN пятая колонка:S
Пятый столбец заполняется только в том случае, если рабочая копия элемента переключена относительно его родительского элемента
Элемент является дочерним по отношению к своему родительскому каталогу.
S
Элемент переключен.
Статус SVN шестая колонка:К, О, Т, Б
Шестой столбец заполнен информацией о блокировке.
Когда используется параметр –show-updates, файл не блокируется.Если параметр –show-updates не используется, это просто означает, что файл не заблокирован в этой рабочей копии.
K
Файл заблокирован в этой рабочей копии.
O
Файл заблокирован либо другим пользователем, либо в другой рабочей копии.Это появляется только при использовании параметра –показать-обновления.
T
Файл был заблокирован в этой рабочей копии, но блокировка была украдена и является недействительной.В данный момент файл заблокирован в репозитории.Это появляется только при использовании параметра –показать-обновления.-
B
Файл был заблокирован в этой рабочей копии, но блокировка была взломана и является недействительной.Файл больше не заблокирован, это появляется только при использовании параметра –показать-обновления.
Статус SVN седьмой столбец:*
Устаревшая информация отображается в седьмом столбце (только если вы передадите переключатель –показывать-обновления).Это то, чего ожидают от команды новички в SVN, не понимая, что она всего лишь сравнивает текущее состояние файла с той информацией, которую он получил с сервера при последнем обновлении.
Элемент в вашей рабочей копии обновлен.
*
На сервере существует более новая версия элемента.
Всякий раз, когда у вас нет доступа к документации (SVNBook), тип (Linux):
svn help status | grep \'\?\'
svn help status | grep \'\!\'
svn help status | grep \'\YOUR_SYMBOL_HERE\'
или вставьте следующую функцию в ваш файл ~/.bashrc, например:
svncode() {
symbol=$1
[ $symbol ] && svn help status | grep \'$(echo $symbol)\' || \
echo "usage: svncode <symbol>"
}