Восстановление от неудачного "svn copy" - PullRequest
1 голос
/ 12 декабря 2008

Сегодня днем, после того, как заметил, что сборка не работает и некоторые файлы выглядели как очень старые версии (около 2 недель), я проверил журнал svn. По-видимому, только сегодня днем ​​один из разработчиков сделал «svn-копию» каталога из более старой версии в тот же каталог. Таким образом, представляется, что последняя версия «i.e.e.d.» всех файлов в этом каталоге действительно старая, а вся история «i.e. log» еще старше.

Тем не менее, я думаю, что я могу выздороветь, используя другую "svn copy" (т.е. болезнь - это лекарство). Я собираюсь найти ревизию, в которой была сделана плохая «копия SVN» (скажем, Rev 1234), вычесть 1 (1233) и сделать:

svn copy -r 1233 file://path/to/messed/up/dir file://path/to/messed/up/dir

Это должно восстановить последнюю версию, а также вернуть всю мою историю. Я прав насчет этого?

Ответы [ 3 ]

7 голосов
/ 12 декабря 2008

Согласно книга СВН ,

svn merge -c -1234

должен сделать трюк.

В книге есть целый раздел .

подробное объяснение: -c -1234 переводится в -r 1234:1233, что отменяет изменение по сравнению с ревизией 1234.

1 голос
/ 12 декабря 2008

Эта команда копирования не работает по двум причинам:

  1. , поскольку целевой каталог уже существует, svn обрабатывает запрос на копирование как копирование в целевой каталог; Вы не можете переписать с помощью cp. Так что это создаст вверх / dir / dir. Когда была создана HEAD-версия dir, сначала также должна была быть выполнена операция удаления.
  2. это запрос на копирование версии 1233 объекта HEAD up / dir. Однако у объекта dir в HEAD не было ревизии 1233; объект с тем же путем, который имел такую ​​ревизию, был удален.

Чтобы это исправить, вам нужно

  1. удалить текущий объект dir:

    svn rm file:///path/to/messed/up/dir
    
  2. Копирование с использованием "peg revisions"

    svn cp file:///path/to/messed/up/dir@1233 file:///path/to/messed/up
    
0 голосов
/ 12 декабря 2008

Возможно, но сначала сделайте резервную копию.

На самом деле, мне интересно, почему у вас нет ежедневной резервной копии, которую вы можете просто восстановить уже ... Ваш репозиторий SVN, безусловно, достаточно важен для этого?

...