Есть ли способ оправиться от случайного "svn revert"?
Мне удалось застрелиться в ногу этим утром, сделав следующее:
- Начнется работа над изменением моего проекта.
- Сделал кучу изменений в кучу файлов
- Понял, что мой подход был неправильным, и что мне нужно было начать больше
- cd'd на верхний уровень моего проекта и сделал "svn -recursive revert". для восстановления моей локальной песочницы до состояния предварительного изменения.
- Завыл от ужаса, когда понял, что в моей локальной песочнице было много других изменений, и я просто уничтожил их всех. (сервер svn был в прошлую пятницу, поэтому я не смог проверить их, и я забыл о них в выходные)
К счастью, в этом случае я сделал "svn diff > temp.txt" перед тем, как покинуть работу в пятницу, и файл temp.txt все еще был на моем жестком диске, поэтому я смог передать этот файл в "patch", и восстановить мои потерянные изменения.
Но для моей будущей справки (т.е. в следующий раз я сделаю ту же тупую ошибку)... есть ли способ сказать svn отменить "svn revert"? Сохраняет ли svn резервную копию локального/не проверенного доступа в любом месте?
Ответы
Ответ 1
Нет, (абсолютно) НЕТ.
Если вы скажете Subversion, он должен вернуть файл, все изменения ушли ветром.
Только ваша память может вернуть их.
Исключение: Новые добавленные вами файлы потеряют статус "добавлен", но файл останется в этом каталоге, только статус неизвестен ( "?" )
Исключение платформы/программного обеспечения: Используя TortoiseSVN в Windows, Revert сначала бросает файлы в Корзину, а затем возвращает их. Вы можете перекопать в корзину, чтобы восстановить файлы.
Ответ 2
Есть решение...
перейдите в свою корзину, вы найдете там последнюю версию удаленного файла.
Черепаха "бросает" в корзину каждый файл, который он возвращает.
Ответ 3
Не совсем специфичная для Subversion, но если вы работаете с Eclipse, вы можете попробовать свою удачу в местной истории.
Теперь, что-то немного больше Специфика Subversion: если вы не хотите создавать ветку для каждого изменения, которое вы делаете, вы можете сохранить локально пару багажников (trunk-modif-1, trunk-modif- 2...). Каждая "модификация" выполняется на отдельном дереве, и вам нужно сохранить список, чья проверка соответствует той модификации.
Или вы можете использовать Git локально, но я никогда не пробовал его.
Ответ 4
Недавно эта ошибка не заключалась в изменении новых файлов (около 10) на SVN, и все они исчезли из-за моей глупой ошибки. Но то, что меня спасло, - это окно "Восстановить предыдущие версии" в контекстном меню. Фу, это было облегчение и извлеченные уроки.
Ответ 5
Вы не можете восстановить файлы, если вы используете svn клиент командной строки.
Но вы можете восстановить их, если вы используете TortoiseSVN в качестве вашего svn-клиента. TortoiseSVN автоматически переместит их в корзину. Вы можете восстановить их после случайного возврата.
Это настраиваемый параметр в TortoiseSVN. Он находится под Настройки → Диалог 1 → При повторном использовании используйте корзину.
По умолчанию он проверяется, что означает, что файлы перемещаются в корзину. Если вы хотите (в основном вы не хотите отключать это. Если у вас есть причина, пожалуйста, дайте мне знать)
Ответ 6
Если вы используете InteliJ, тогда вы счастливый человек. В верхнем меню у вас есть опция управления версиями, и под ней вы найдете опцию локальной истории, где вы найдете всю историю для выбранного файла, включая всю операцию, которую вы сделали с этим файлом (обновление, фиксация, возврат).
Удачи,
Arkde
Ответ 7
Также, если вы вернули свой код .NET(файлы .cs и т.д.), и вы создали свое приложение перед возвратом, но после внесения изменений вы можете восстановить изменения из файла сборки с помощью любого из инструментов отражателя для просмотра код.
Ответ 8
Я вернул решение (Visual Studio + AnkhSVN) и потерял несколько файлов. Я не могу найти файл в корзине.
НО: Я восстановил свои проигрывающие файлы с помощью Handy Recovery, т.е. SVN просто удаляет мои файлы при возврате.
Использовать любое программное обеспечение для восстановления данных для восстановления восстановленных файлов (например, Handy Recovery)
Ответ 9
Нет, SVN не сохраняет журнал или резервную копию (хотя в других ответах есть решение для TortoiseSVN).
Но если кто-то просматривает ответы и не замечает этот комментарий в вопросе OP:
"К счастью, в этом случае я сделал" svn diff > temp.txt "перед тем, как покинуть работу в пятницу, а файл temp.txt все еще был на моем жестком диске, поэтому я смог передать этот файл в" patch "" и восстановить мои потерянные изменения".
Я предполагаю, что это обычная парадигма, чтобы сделать "svn diff", прежде чем вы выполните "svn revert". Если вы привыкнете к этому, даже если diff просто отозвался на терминал, у вас есть хотя бы один из возможных способов восстановления потерянных изменений.