Подтвердить что ты не робот

SVN Synchronize vs Update to Head (подзаголовок)

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

Идеи?

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

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

4b9b3361

Ответ 1

Есть разница. Когда вы используете представление Synchronize, обновляются только элементы в представлении. В Subversion папки также имеют ревизию, которая накладывается каждый раз, когда ребенок модифицируется. Однако, поскольку они не отображаются в представлении, они никогда не обновляются. Когда вы выполняете команду > Обновление проекта, все папки и файлы обновляются до единой единообразной версии. У меня есть пара сообщений в блоге, которые объясняют это:

Это объясняет основную концепцию 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 в вашем проекте, чтобы довести все до единой единообразной версии.

Марк

Ответ 2

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

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

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

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