Есть ли способ оправиться от случайного "svn revert"?


сегодня утром мне удалось выстрелить себе в ногу, сделав следующее:

  1. начал работать над изменением моего проекта
  2. сделал кучу правок в кучу файлы
  3. понял, что мой подход был все неправильно, и что мне нужно было начать все сначала
  4. компакт-диска на верхнем уровне мой проект и сделал "СВН --рекурсивный возврат ."чтобы восстановить мою локальную песочницу до состояния, предшествующего изменениям.
  5. взвыл от ужаса, когда понял, что в моей местной песочнице было много других выдающихся изменений, и я только что уничтожил их все. (сервер svn не работал в прошлую пятницу, поэтому я не смог проверить их, и я забыл о них в выходные)

к счастью, в этом случае я сделал "svn diff > temp.txt" перед уходом с работы в пятницу, и темп.txt-файл все еще был на моем жестком диске, поэтому я смог передать этот файл в "патч" и восстановить потерянный изменения.

но для моей будущей ссылки (т. е. в следующий раз я делаю ту же глупую ошибку)... есть ли способ сказать svn отменить "SVN revert"? Сохраняет ли svn резервную копию локальных / незарегистрированных различий в любом месте?

10 88

10 ответов:

нет, (абсолютно) нет.

Если вы говорите Subversion, он должен вернуть файл, все изменения ушли ветром.

только память может вернуть их обратно.

исключения: новые файлы, которые вы добавили, потеряют только свой статус "добавлено", но файл останется в этом каталоге, только статус неизвестен ("?")

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

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

Не совсем Subversion specific, но если вы работаете с Eclipse, вы можете попробовать свою удачу в местной истории.

теперь, что-то немного более специфичное для Subversion: если вы не хотите делать ветку для каждого изменения, которое вы делаете, вы можете сохранить пару стволов, проверенных локально (trunk-modif-1, trunk-modif-2...). Каждая "модификация" выполняется на отдельном дереве, и вам нужно только сохранить список того, какие проверки соответствуют какой модификации.

или вы могли бы использовать git локально, но я никогда не пробовал.

недавно эта ошибка не совершала новых изменений файлов (около 10) на SVN, и все они исчезли из-за моей глупой ошибки. Но то, что спасло меня, было опцией Windows "восстановить предыдущие версии" в контекстном меню. Фу, это было облегчение и урок усвоен.

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

но вы можете восстановить их, если вы используете TortoiseSVN в качестве клиента svn. TortoiseSVN автоматически переместит их в корзину. Вы можете восстановить их оттуда после случайного возвращения.

это настраиваемый параметр в TortoiseSVN. Он находится под настройки - > Диалог 1 - > использовать корзину при возврате.

By по умолчанию он установлен, что означает, что файлы перемещаются в корзину. Если вы хотите(в основном вы не хотите, чтобы отключить это. Если у вас есть причина, пожалуйста, дайте мне знать)

Если вы используете InteliJ то вы счастливый человек. В верхнем меню у вас есть опция управления версиями, и под ней вы найдете опцию локальной истории, где вы найдете всю историю для выбранного файла, включая все операции,которые вы сделали с этим файлом (обновление, фиксация, возврат ).

удачи, Аркде

также, если вы вернули свой .NET-код (.cs-файлы и т. д.), И вы создали свое приложение перед возвратом, но после внесения изменений вы можете восстановить изменения из файла сборки, используя любой из инструментов reflector для просмотра кода.

Я вернул решение (Visual Studio + AnkhSVN) и потерял изменения нескольких файлов. Я не могу найти файл в корзине.

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

используйте любое программное обеспечение для восстановления данных для восстановления возвращенных файлов(например, trial Нужны)

Мне очень повезло найти локальный журнал изменений файла (локальные ревизии) в браузере истории в Eclipse. Я проверял различия один за другим, и я сделал несколько сохранений в файле перед перезаписью.

нет, SVN не хранит журнал или резервную копию (хотя есть решение для TortoiseSVN, отмеченное в других ответах).

но в случае, если кто-то просматривает ответы и не заметил этот комментарий в вопросе OP:

" к счастью, в этом случае я сделал "svn diff > temp.txt" перед уходом с работы в пятницу, и темп.txt-файл все еще находился на моем жестком диске, поэтому я смог передать этот файл в "патч" и восстановить потерянные изменения."

I представьте, что это общая парадигма, чтобы сделать "svn diff", прежде чем сделать "svn revert". Если вы привыкнете делать это, даже если разница просто отражается на терминале, у вас есть по крайней мере один возможный способ восстановить потерянные изменения.