svn cat after svn del - PullRequest
       0

svn cat after svn del

3 голосов
/ 20 мая 2010

Я случайно svn-удалил файл с svn del --targets del.txt. Теперь я хотел бы восстановить этот файл с svn cat myPreciousFile.txt@4130 > myPreciousFile.txt, но svn предупреждает меня, что myPreciousFile.txt не контролируется версией A svn cat -r 4130 myPreciousFile.txt > myPreciousFile.txt тоже не работал.

Может кто-нибудь сказать, пожалуйста, как мне восстановить этот файл?

EDIT

Хорошо, я попробовал это с svn merge, но это все еще не работает. Вот что я сделал (имена файлов изменены, чтобы защитить виновных ...):

f:\path\to\dev\dir> svn diff -r 4250:4251 --summarize
D      file_one.tyb
D      file_two.tyb
D      myPreciousFile.txt

Я интерпретирую этот вывод как «myPreciousFile был удален в ревизии 4251». Итак, я попробовал это с svn merge:

f:\path\to\dev\dir> svn merge-c -4251 myPreciousFile.txt

И svn все еще предупреждает меня о том, что myPreciousFile.txt не находится под контролем версий. (То же самое сообщение об ошибке между svn merge-c -4250 myPreciousFile.txt.

Ответы [ 3 ]

5 голосов
/ 20 мая 2010

Вы не должны восстанавливать файл с cat.

Правильный способ сделать это - copy

svn copy http://server/full/path/to/myPreciousFile.txt@4130 .

после этой фиксации текущий каталог. с этим решением вы сохраните полную историю изменений этого файла.

3 голосов
/ 20 мая 2010
svn merge -c -<revision where you deleted the file> .

Таким образом, если удаление произошло во время ревизии 4131, вы бы:

svn merge -c -4131 .
             ^ the negative on the revision is important

В ответ на вопрос отредактируйте:

Вы не должны указывать имя файла. Просто сделайте . и ваш файл будет восстановлен. Затем svn revert изменения, которые вы не хотите возвращать.

0 голосов
/ 20 мая 2010

Как и предлагали другие, вы можете выполнить обратное слияние, чтобы вернуть ваш файл.Я подозреваю, что ваша команда терпит неудачу, потому что вы также указали конкретный файл, который хотите объединить, и этот файл больше не находится под контролем исходного кода.Я вижу два варианта, как его восстановить.

Объединить и вернуть

Отменить объединение всего коммита, а затем вернуть файлы, которые вы действительно хотели удалить.Вот пример, который вы дали:

f:\path\to\dev\dir> svn diff -r 4250:4251 --summarize
D      file_one.tyb
D      file_two.tyb
D      myPreciousFile.txt

Выполните обратное слияние:

f:\path\to\dev\dir> svn merge -c -4251

Затем верните те два, которые вы действительно хотели удалить:

f:\path\to\dev\dir> svn revert file_one.tyb
f:\path\to\dev\dir> svn revert file_two.tyb

Копировать

Используйте команду копирования, предложенную zerkms, для копирования нужного файла из истории хранилища.

svn copy http://server/full/path/to/myPreciousFile.txt@4130 .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...