SVN Synchronize vs Update to Head (подклипс) - PullRequest
22 голосов
/ 05 февраля 2010

Я довольно новичок в Subversion и Subclipse и вижу некоторые проблемы, которые заставляют меня поверить, что есть разница между обновлением до головы и синхронизацией. В частности, я обнаружил, что, когда я пытаюсь вернуться (используя историю подклипсов), я часто получаю сообщение: «Не удается отменить объединение диапазона из собственной будущей истории пути, попробуйте сначала обновить». Моя синхронизация должна гарантировать, что у меня есть «head» версия всех файлов в моей ветке на REPO, но выполнение «Update to head» решает проблему ... так что же дает? Я попытался проверить консоль SVN, чтобы увидеть, что меняется, но это не очень многословно.

Идеи

У меня второй вопрос, но я предполагаю, что ответ на первый из них пролил свет на него. Если вам любопытно, и у вас есть время на чтение, я тоже напишу. Вот сценарий ... Я разветвлял все свои файлы из тега «Производство» и начал работу над моим проектом. После нескольких коммитов я проверяю историю измененного файла и замечаю, что «жирная» версия (в соответствии с документацией это должно быть заголовком) ниже всех моих коммитов. Как будто то, что у меня есть, не голова. Но голова просто последняя версия проекта, верно? Так чего мне не хватает.

Спасибо за ваш ответ и нашли время, чтобы прочитать это!

Ответы [ 2 ]

28 голосов
/ 06 февраля 2010

Есть разница. При использовании представления «Синхронизировать» обновляются только элементы в представлении. В Subversion папки также имеют ревизию, которая увеличивается при каждом изменении дочернего элемента. Однако, поскольку они не отображаются в представлении, они никогда не обновляются. Когда вы делаете Team> Update в проекте, все папки и файлы обновляются до единой ревизии. У меня есть пара постов в блоге, которые объясняют это:

Это объясняет основную концепцию SVN рабочей копии со смешанной ревизией и важно для понимания этого:

http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

Второй показывает функцию в Subclipse, чтобы справиться с этим:

http://markphip.blogspot.com/2006/12/subclipse-synchronize-feature-show-out.html

Со времени написания второго блога большинство пользователей Subclipse обнаружили, что им не нравится эта функция, хотя она помогает с этой проблемой. Так что теперь он отключен по умолчанию в текущих версиях. Я не думаю, что кто-то использует его больше.

Главное, просто время от времени использовать Team> Update в своем проекте, чтобы привести все это к единой ревизии.

Mark

2 голосов
/ 05 февраля 2010

Я думаю, что ваше предположение о том, что синхронизация такая же, как обновление до HEAD, неверно. Если на языке Subclipse «синхронизация» означает «фиксация», то это, безусловно, ложь, потому что фиксация не обновляет вашу рабочую копию. Вы должны явно обновить после того, как вы подтвердите свое участие в HEAD.

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

Эта статья может помочь прояснить эту концепцию смешанных ревизий: http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

Я также призываю вас ознакомиться с документацией SVN , поскольку работа с плагинами и расширениями для Subversion всегда упрощается, когда вы понимаете, как работает базовая система SVN.

...