Что означает символ состояния Subversion "~"? - PullRequest
109 голосов
/ 12 мая 2009

Я получаю символ тильды, когда делаю svn status.

Вот вывод проекта после его редактирования в XCode.

svn status
M      build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree
M      build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header
M      build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols
~      build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings
M      main.m
//more changed files

Есть идеи, что это значит? Кажется, не могу найти его на Google или любом из чит-листов SVN.

Интересно, что я редактировал только main.m, но есть много измененных файлов. Не знаю, почему это будет. У кого-нибудь есть советы по работе с SVN и XCode? Должен ли я только поставить свои исходные файлы под контроль версий?

Редактировать: - причина в том, что файл, который уже находился под управлением версией, заменяется файлом другого типа. В этом случае strings.pbxstrings был файлом и теперь стал каталогом. Мораль истории заключается в том, что не помещайте папку для сборки в систему управления версиями.

Ответы [ 11 ]

87 голосов
/ 12 мая 2009

Книга SVN говорит:

Элемент версионирован как один тип объекта (файл, каталог, ссылка), но был заменен другим типом объекта.

Так, возможно, изначально это был один файл, но вы изменили его на каталог или что-то в этом роде?

34 голосов
/ 09 ноября 2011

Вот что я сделал:

Если папка «Тест»

  1. mv Test Test1
  2. svn удалить Тест
  3. mv Test1 Test
15 голосов
/ 12 мая 2009

С

svn help status

'~' версионный предмет, заблокированный каким-либо предметом другого вида

Я видел это только там, где изменились права доступа к файлу, и у svn нет прав на выполнение, я верю.

Надеюсь, это поможет.

12 голосов
/ 06 июня 2013
svn delete --keep-local x
svn commit -m "del x"
svn add x
svn commit -m "blah"
12 голосов
/ 04 сентября 2009

Самый простой способ исправить это - создать резервную копию, затем удалить папку или файл с таким статусом и затем выполнить команду «svn up»: это не обязательно папка, замененная файлом, это может быть просто папка отсутствует или поврежден.

10 голосов
/ 30 декабря 2010

Это может произойти, когда вы удаляете папку .svn в папке (например, когда вы удаляете каталог, а затем снова создаете тот же каталог) или когда вы заменяете каталог символической ссылкой или файл то же имя.

Предположим, что это папка с именем a-folder, это можно исправить, введя следующие команды в родительской папке:

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf
$ svn up --force .
svn: Directory 'logs/.svn' containing working copy admin area is missing
$ svn up --force .
E    a-folder
...
Updated to revision n.

И тогда svn добавляет / удаляет и фиксирует изменения снова

3 голосов
/ 25 мая 2012

Я просто хочу поделиться, что это проблема, с которой часто сталкиваются при установке расширений в Joomla. Расширения устанавливаются через CMS и принадлежат apache без записи группы. Обычно следующим шагом является добавление файлов в SVN, но если вы не используете sudo или не изменили параметры доступа к файлам, то SVN завершится неудачно, когда не сможет записать каталог .svn. Вот простое решение.

mv foo foo-bak
svn up foo
svn revert foo

# just for good measure. Foo should not show up in the two following commands.
ls | grep foo
svn st | grep foo

mv foo-bak foo
svn add foo
3 голосов
/ 05 января 2012

Была похожая проблема, SVN жаловалась на блокировку. Вот что мы сделали:

  • Резервное копирование файлов
  • Удалил этот каталог с помощью rm -r (linux)
  • Ран svn cleanup в каталоге
  • Ran svn up --force в каталоге
2 голосов
/ 17 мая 2016

У меня часто было это при обновлении модулей под (например) Joomla !, Wordpress или Drupal. Иногда каталог .svn удаляется в процессе обновления.

# rename updated directory
mv foo foo.new

# restore the old directory
svn up foo

# merge / update the old directory with new items
# notice that the above command will preserve the obsolete files
# so you should do a diff -r in order to remove them
cp -r foo.new/* foo

# Add files commit, etc
svn add foo/*
svn delete foo/xx
svn commit -m "updated module"
2 голосов
/ 09 ноября 2009

Это также может быть связано с символическими ссылками в Windows. Когда вы фиксируете символическую ссылку в SVN и затем проверяете ее в Windows, ссылки изменяются на обычные файлы, и это также отображается как ~.

...