Как сделать вашу локальную версию самой новой на SVN - PullRequest
5 голосов
/ 20 марта 2009

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

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 20 марта 2009

Путь грубой силы:

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

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

Обратное слияние с исходной ревизией:

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

Это, вероятно, более ручная инструкция, если только вы не вернете все обратно, не проверив изменения.

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

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

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

3 голосов
/ 20 марта 2009

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

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

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

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

  • Сохраните резервную копию ваших текущих файлов;
  • Проверить новую копию репо;
  • Если вы видите, что она такая же, как ваша копия, тогда больше ничего не нужно делать.
  • Если нет, перезаписать все файлы в новой копии своей резервной копией (кроме скрытых папок .svn!)
2 голосов
/ 20 марта 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...