2009-03-20 4 views
5

Я внесла некоторые изменения и совершил их (до версии 2) и выяснил, что через несколько минут они внедрили новые ошибки в мою программу. Поэтому я переключился на некоторые из файлов в более старую версию, чтобы вернуть некоторые файлы в версию 1 на моей локальной платформе. С тех пор я сделал много изменений, которые я не хочу потерять, и я использовал commit (версия 3), чтобы получить локальные изменения на сервере.Как заставить вашу локальную версию как самую новую на SVN

Версия, которую я имею локально, - это именно то, что я хочу быть в репозитории в качестве пересмотра главы, хотя некоторые из файлов по-прежнему официально относятся к «версии 1». Я предполагаю, что я должен каким-то образом использовать SVN-слияние, но я не уверен, как это сделать. Любой совет?

Редактировать: Когда я использую diff, он показывает изменения от локальной версии до версии rep. Я мог бы обновить, но тогда у меня снова будет нерабочая версия. Так что я хочу, это какая-то принудительная фиксация, которая просто говорит «это новейшая версия, период».

edit2: При выполнении «фиксации» SVN сообщает, что изменений нет. Спасибо Нилу Баттерворт за вопрос.

edit3: Что я наконец сделал, FYI: Я должен был просто использовать предложение Тима, но я был настолько глуп, чтобы сделать обновление, не думая о том, что делаю. Конечно, все было действительно перепутано без ремонта. Итак, я наконец-то сделал это, чтобы экспортировать проект в новый каталог. Очевидно, это не так, как вы должны это делать, но я больше не хотел связываться с этим материалом. В конце концов мне пришлось вернуться к фактическому прогрессу в самом проекте ;-) Я знаю, что я не могу так много делать, когда я работаю в более крупной команде, но я не :)

+0

Что происходит, когда вы совершаете свои изменения? –

+0

В нем говорится: никаких изменений. Хороший вопрос – panschk

ответ

9

Метод пересылки:

  1. Сделайте копию локальных файлов.
  2. Удалить все файлы .svn во всех каталогах
  3. Проверьте версию HEAD.
  4. Скопируйте локальные файлы на зарегистрированный HEAD.
  5. Проверьте локальные файлы обратно в репозиторий.

Если вы сделали это правильно, клиент SVN должен интерпретировать измененные файлы как обновления в репозитории. Это, однако, перезапишет любые изменения, сделанные другими людьми, которые вы, возможно, захотите сохранить. Если вы хотите сохранить эти изменения, сначала сделайте разницу во всех файлах и включите все последние изменения, прежде чем делать окончательную фиксацию.

обратное слияние обратно в первоначальную ревизию:

  • Для каждого измененного файла,
    1. Сравнение различий, изменений ноты, которые вы хотите сохранить, и изменить свою локальную копию соответственно.
    2. Сделайте копию локальных файлов.
    3. Обратное слияние HEAD обратно в желаемую оригинальную версию.
    4. Вставьте свою копию локальных файлов в объединенную локальную копию. (Удалить .СВН первый)
    5. Commit

Это, вероятно, более руководство, если вы просто вернуть все обратно без проверки каких-либо изменений.

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

Возвращение назад - это просто слияние, и все слияния всегда происходят на вашей локальной копии. В идеальной системе слияние будет отслеживаться, но Subversion не отслеживает информацию о слиянии, поэтому вы также можете сделать метод 1 и просто сделать комментарий в журнале фиксации.

Некоторые URL для поиска:

+0

Это будет план Б, если ничего не будет работать. Но это был бы довольно ручной труд. Я бы предпочел сделать это более умным способом ;-) – panschk

+0

Да, немного раздражает, но он всегда работает. –

+0

На самом деле это не так. Я делал это много раз раньше. Предполагая окна, выберите все, скопируйте, вставьте в другое место. Найдите все .svn, удалите. Обновите голову. Скопируйте старую версию, вставьте ее обратно. Commit. – Tim

3

Есть две возможности здесь:

  • Вы эффективно переключаться до предыдущей версии репо, поэтому вы работали над версией 1;
  • Или вы проверили старые версии файлов по версии 2, изменили их и перенесли как новую версию.

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

Если вы не уверены, однако, я бы рекомендовал:

  • Держите резервную копию текущих файлов;
  • Ознакомьтесь с новой копией репо;
  • Если вы видите, что это то же самое, что и ваша копия, то больше ничего не нужно делать.
  • Если нет, перезаписать все файлы в новой копии с резервной копией (скрытые .svn папки, за исключением!)
+0

Это на самом деле имеет для меня больше смысла, чем принятый ответ. Я сделал это несколько раз сам. – WakeUpScreaming

2

Так что я перешел на некоторые из файлов старой версии, чтобы получить некоторые из файлы назад к версии 1 на моей локальной платформе .

Вместо этого вы должны были вернуть изменения от конкретной ревизии. После этого вы все равно сможете обновлять и возвращать изменения из этой версии.

Смежные вопросы