Как отменить обновление на SVN - PullRequest
0 голосов
/ 07 июня 2011

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

Ответы [ 2 ]

1 голос
/ 07 июня 2011

XCode позволяет обновить код до определенной ревизии.Я не уверен, как это сделать в XCode 4, но в XCode 3.2 вы щелкаете правой кнопкой мыши по файлу класса и нажимаете «Получить информацию».В информационном окне перейдите на вкладку «SCM».Там вы увидите список всех версий SVN для этого файла класса.Вы должны увидеть ревизию вашего коллеги там, сопровождаемую его проверкой в ​​комментарии.Выберите ревизию ПРОСТО ПЕРЕД этой (это та, над которой вы работали до того, как сделали обновление).XCode теперь позволит вам обновиться до этой ревизии (через кнопку обновления в нижней части информационного окна).

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

Кроме того, вы, вероятно, должны сообщить своему коллеге, чтобы он не регистрировал ошибочный код в качестве лучшей практики:)

Это то, на что вы должны обратить внимание:

enter image description here

РЕДАКТИРОВАТЬ:

Для XCode4 я провел некоторое исследование, и если то, что я до сих пор узнал, правда, я ОЧЕНЬ разочарован функциональностью SCM в XCode4 (см .: Гдеопция «Вернуть» в Xcode 4 Source Control? )

Итак, я определил, что функциональность для обновления до определенной ревизии была извлечена из Xcode4 (Если я ошибаюсь, я открыт для исправления).

Однако существует обходной путь (хотя это приводит к тому, что файлы, с которыми вы работаете, получают рядом с ними флаг "M" для изменения, а не флаг "U", означающийработает надпредыдущая версия).

В XCode4 на панели инструментов вверху выберите Вид >> Редактор >> Версия.

enter image description here

В этом редакторе XCode4 показываетваши файлы классов в двух окнах редактора, один с вашей локальной ревизией и один с самой последней из репозитория.

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

enter image description here

Эта панель инструментов активна и позволяет переключать вид на другую ревизию.

enter image description here

Как только вы сделаете это, я боюсь, вам просто придется скопировать этот код в локальный файл класса.

Этот методубедитесь, что вы работаете с рабочей копией кода.Однако, это может быть неправильный способ сделать это (хотя на данный момент это ЕДИНСТВЕННЫЙ способ).

Два других решения, которые у меня есть:

1 (не рекомендуется)

Каким-то образом работайте с копией XCode 3.2

2 (зависит от требуемого уровня функциональности)

Загрузите лицензионную копию SmartSVN который позволяет обновлять файлы до определенных версий.

0 голосов
/ 07 июня 2011

Вам нужно сделать обратное слияние с его ревизии.Проверьте эту ветку: http://www.svnforum.org/threads/31710-how-to-undo-merge-after-svn-update

Небольшой оффтоп: уставшие от подобных проблем моя команда решила перейти на Mercurial и ни разу не пожалела об этом.

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