Команды коммит / обновление / слияние в SVN - PullRequest
0 голосов
/ 01 апреля 2010

Я хочу точно знать, когда мне следует использовать любую из команд commit, update и merge в svn.

после того, как я проверил проект и изменил код, должен ли я использовать update, commit или merge для синхронизации?

поправьте меня, если я не прав:

update = все изменения в репозитории копируются в ваш локальный проект.

commit = все изменения в вашем локальном проекте копируются в репозиторий.

слияние = то же, что и выше, но вы определяете направление?

когда я использую каждую команду выше?

Ответы [ 2 ]

3 голосов
/ 02 марта 2015

Давайте посмотрим, как отличаются «обновление» и «слияние»:

Предположим, что история изменений репозитория X выглядит следующим образом:

 ...->2707->2708->2709->2710->2711

2711 - номер последней редакции X. Может быть ошибка, которая была введена где-то между ревизиями 2708 и 2711. Вы знаете, что эта ошибка не существовала в ревизии 2707. Она могла быть введена в 2708, 2709, 2710 или 2711. По сути, вам интересно знать, какой коммит введен баг.

Один из способов сделать это - вернуться (откатиться) к изменениям в вашем локальном репозитории по каждому из этих номеров ревизий и проверить, существует ли ошибка до сих пор. Предположим, например, что ошибка была введена в ревизии 2709. Вы можете откатить свои коммиты с помощью следующих команд:

$ svn update -r 2710

Ошибка все еще существует ...

$ svn update -r 2709

Ошибка все еще существует ...

$ svn update -r 2708

Ошибка не существует. Это подразумевает, что ревизия 2709 вызвала ошибку.

Тем не менее, вы могли бы в равной степени,

$ svn merge -r 2711:2708

Единственное различие между ними состоит в том, что svn update будет поднимать флаги, если будут локальные изменения, и сообщать вам. Вы можете принять эти изменения или вернуться назад, чтобы при запуске svn diff никаких изменений не было. С другой стороны, svn merge разрешит различия между локальной копией и хранилищем. Полезно, что они все равно будут делать то же самое, но здесь они демонстрируют только поведенческие различия.

3 голосов
/ 19 января 2013

И я цитирую Книгу SVN :

Типичный рабочий цикл выглядит следующим образом:

Обновите вашу рабочую копию . Это включает использование svn update команда.

Внесите изменения . Наиболее распространенные изменения, которые вы сделаете, - это правки. к содержанию ваших существующих файлов. Но иногда вам нужно добавить, удалять, копировать и перемещать файлы и каталоги - svn add , svn delete , Команды svn copy и svn move обрабатывают эти виды структурных изменения в рабочей копии.

Просмотрите ваши изменения . Команды svn status и svn diff являются критическими просмотреть изменения, внесенные в рабочую копию.

Исправьте свои ошибки . Никто не идеален, так как вы просматриваете свои изменения, Вы можете заметить что-то не совсем правильное. Иногда самый простой Способ исправить ошибку - начать все заново с нуля. svn Команда revert восстанавливает файл или каталог в неизмененном состоянии.

Разрешить любые конфликты (объединить изменения других). В течение времени, которое требуется вносить и проверять изменения, возможно, другие опубликованные изменения тоже. Вы хотите интегрировать их изменения в Ваша рабочая копия, чтобы избежать возможных сценариев устаревания когда вы пытаетесь опубликовать свой собственный. Опять же, команда svn update способ сделать это. Если это приводит к локальным конфликтам, вам нужно разрешите те, которые используют команду svn resol * .

Опубликовать (зафиксировать) ваши изменения . Команда svn commit передает ваш изменения в хранилище, где, если они приняты, они создают новейшие версии всех вещей, которые вы изменили. Теперь другие могут видеть твоя работа тоже!

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