Intereting Posts
Как просмотреть номера версий файлов в папке на основе комментариев в SVN? Git – несколько машин на одного разработчика – передача через машины, но не главная ветка GitHub: тег, но не релиз Как просмотреть изменения в репозитории перед проверкой? Аутентификация GitHub из приложения WPF с использованием Username и Password TFS получают только источники Как программно выполнять управление версиями файлов с помощью SVN и .NET? Нант: создание проектов с использованием svn-externals Как я могу добавить наиболее распространенные команды mercurial на панель инструментов Eclipse? tortoise svn показывает useid, как я могу изменить отображаемое имя для автора Добавление существующего проекта в отдельное существующее решение и включение в Visual SVN? Имея частный филиал публичного репо на GitHub? Как нарисовать диаграммы схем ветвления в graphviz Hudson – Stale svn tags в config.xml после смены scm на git Сократить двоичные данные из хранилища git после факта

В SVN, как откат к предыдущей ревизии вместо слияния

Я видел другие подобные сообщения и ответы. Но моя ситуация более ограничена следующим:

Branch repo / A имеет дочерние филиалы repo / B и repo / C. C нажал / объединил новый foo.c в A. Затем B вытащил / объединил, чтобы получить foo.c, затем перетащил / объединил другие изменения. Предположим, что ревизия B изменилась с 10 до 11 после тяги. Теперь все перепутано для ветви B, поэтому я хочу, чтобы B вернулась к ревизии 10 и взяла, поскольку никуда не было.

Поэтому я просмотрел этот пост и понял, как решить проблему, выполнив следующий шаг:

  1. svnadmin dump $ (repo / B) -r 0:10 | svnadmin load $ (newRepo / B)
  2. теперь я хочу использовать оригинальный URL-адрес репо:

    2.1), чтобы предотвратить что-либо испортить: svnadmin copy $ (repo / B) $ (repo / B_backup)

    2.2) копировать по новому: svnadmin copy $ (newRepo / B) $ (repo / B);

  3. Теперь я хочу, чтобы UUID был таким же, и у меня нет svnadmin setuuid, потому что версия svn равна 1.4. Так:

    3.1) До шага 1 svn info $ (repo / B) для записи оригинального UUID

    3.2) После шага 2 откройте журнал $ (repo / B) где-нибудь, затем скопируйте исходный UUID на него

Теперь $ (repo / B) имеет версию 10 и тот же UUID.

Мой вопрос:

  1. После того, как все это закончится, изменится и ветка А и С?

  2. Что-то не хватает в моем решении, потому что я не хочу снова его испортить? Или лучший способ сделать это?

благодаря

Solutions Collecting From Web of "В SVN, как откат к предыдущей ревизии вместо слияния"

Вместо использования svnadmin для сброса и восстановления всего репо (!) Вы должны просто удалить / скопировать поддерево:

 C:\>svn delete -m "this version went bad" svn://server/repo/B Committed revision 12. C:\>svn copy -m "restore good version" svn://server/repo/B@10 svn://server/repo/B Committed revision 13. 

В общем, не используйте svnadmin если вы можете избежать этого. Это действительно для задач администрирования – не обычные операции управления версиями, такие как branch / merge / rollback.