2011-12-19 6 views
1

Пытается свернуть слияние для восстановления 1 конкретного файла. Я считаю, что понимаю, как это должно работать, но получаю странные ошибки.Нечетные сообщения об ошибке слияния SVN

Я перечитал Svn книгу, Google и стек и т.д.

Проблема:

Я хочу, чтобы указать 1 конкретный файл для восстановления.

SVN не любит локальную ссылку на файл, поскольку файл не существует, но онлайн-примеры, похоже, используют имя локального файла.

Он также не нравится полный http-путь, потому что он не существует в репозитории. Я знаю, что этого не существует сейчас, но он был там. Даже при использовании синтаксиса @peg все еще появляется ошибка.

Пример:

  • В редакции я удалить кучу файлов, так R99 был последний момент времени она существовала.
  • Мы сейчас в ревизии , и я хочу только один файл обратно.
  • Допустим, файл называется .myfile (с ведущей точкой, не думаю, что вопросы)
  • URL проекта и «рабочий каталог» является http://server/repo/Project/trunk
  • URL-файла был бы http://server/repo/Project/trunk/.myFile
  • Предположим, что я в каталоге эквивалентной файловой системы, без ожидающих обновлений или коммитов, другими словами svn status --show-updates. показывает, что я в курсе.
  • И я в состоянии сделать Svn кошке http://server/repo/Project/trunk/[email protected]

Неудачные попытки:

svn merge -c -100 .myFile 
Error: .myFile not under version control 

svn merge -c -100 http://server/repo/Project/trunk/.myFile 
Error: svn: '/repo/!svn/bc/120/Project/.myFile' path not found 
Note that rev 120 is between the delete (r100) and now (r150) 

svn merge -c -100 http://server/repo/Project/trunk/[email protected] 
Error: svn: File not found: revision 100, path '/Project/trunk/.myFile' 

svn merge -c -100 . .myFile 
Don't recall specific error. 

svn merge -c -100 . http://server/repo/Project/trunk/[email protected] 
Error: svn: Cannot specify a revision range with two URLs 

... и различные другие комбинации ....

Я действительно тупик. Я считаю, что я понимаю об обратном слиянии и о том, почему @pegs иногда необходимы, но эта конкретная комбинация довольно неприятна.

У меня есть обходные пути: я могу восстановить все файлы, затем очистить. Или просто скопируйте и вставьте более старую версию, я мог бы сделать это с помощью команды svn cat.

Но я хотел бы понять «правильный» способ.

ответ

1

Работая над немного другой проблемой сегодня, я считаю, что, наконец, нашел свой ответ.

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

Одно изменение ключ я сделал:

  • Я использовал явный -r FROM: TO диапазоне, а не только с помощью -c ярлыка.

Другие:

  • источник должен быть в форме URL
  • назначения должен быть в локальной форме ./filename

Гипотетический пример редакция резюме:

  • В настоящее время система находится как r150
  • Файлы были удалены в r100
  • файлы были последний подарок в R99 (хотя и не модифицирована)
  • Файлы были в последний раз добавлено/обновлено в R85
  • Примечание: мой пример файла скрытый файл Unix, так что начинается с dot - в большинстве файлов этого не было бы.

Отменить удаление, я думаю, что это будет:

cd localWorkDir/Project/trunk 
svn update 
svn merge -r100:85 http://server/repo/Project/trunk/.myFile ./.myFile 
svn commit -m "restoring files" 
(message saying committed r151) 

Так что я думаю, что -c синтаксис, при слиянии отдельных файлов, является проблематичным.

Смежные вопросы