Subversion: как восстановить файл с историей - PullRequest
1 голос
/ 03 декабря 2011

Мой босс просто проигнорировал файлы .vbp и, по-видимому, удалил один из них из хранилища в процессе. После объяснения ему, почему ему нужны эти файлы в системе контроля версий, теперь мне нужно вернуть их обратно.

Проблема в том, что я думаю, что он мог добавить это обратно сразу после того, как сказал мне, потому что теперь, когда я пытаюсь добавить это, он говорит мне, что он уже там. Но когда я удаляю его с диска и обновляю, он не восстанавливается. Боюсь, что если я удалю его из репозитория, а затем добавлю мой, он сделает то же самое с его концом, что происходит со мной сейчас.

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

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

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

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Чтобы вернуть файл обратно, вам просто нужно отменить изменения, которые удалили его.

Возможно, вы захотите начать с чистой проверки. Наверное, хорошая идея. Кроме того, похоже, что вам просто нужно запустить svn revert file.vbp при оформлении заказа (возможно, он добавлен, но не введен. svn status должен сообщить вам, что происходит).

Сначала найдите ревизию, которая удалила ее, с помощью svn log -v. Затем, чтобы отменить изменение, перейдите в каталог, к которому принадлежит файл, и используйте svn merge -c -REVISION http://server/path/file. Обратите внимание, номер редакции отрицательный . Наконец, запустите svn commit для подтверждения возврата.

(Примечание: это не приводит к потере истории. Коммит, который удалил его, останется в истории, просто будет новый коммит, восстанавливающий его. SVN должен реализовать тот же файл для таких вещей, как svn log.)

1 голос
/ 03 декабря 2011

Используйте svn blame для поиска, когда файл существовал.

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

...