У меня возник вопрос о версии BASE в svn. Я знаю, что это первоначальная версия элемента с момента последнего обновления, и svn diff и статус в основном работают против этой версии.
Когда обновляется BASE? Обновляется ли он в HEAD при запуске обновления? Всегда ли это верно, даже если во время обновления произошел конфликт? Что BASE имеет конфликт? Есть ли у него версия из моего последнего обновления (до самого последнего обновления, вызвавшего конфликт) или будет ли она обновлена до HEAD, даже если есть конфликт?
Также, когда выполняется svn commit, я предполагаю, что BASE обновляется с моими локальными изменениями, и на данный момент BASE, HEAD и моя локальная копия все одинаковы? Если фиксация прошла успешно.
Когда svn BASE становится равным HEAD
Ответ 1
HEAD - это последняя ревизия в репозитории. BASE - это последняя ревизия, которую вы получили в репозитории. Они одинаковы после успешной фиксации или обновления.
При внесении изменений ваши файлы отличаются от BASE-копий. Когда вы вернетесь, они вернутся к соответствию версии BASE. Когда вы получаете конфликт, вы не обновляете репозиторий. Скорее, ваши файлы считаются "редактируемыми", как если бы вы вносили изменения. После того, как вы разрешите конфликты, вы, по сути, решили, как будут выглядеть финальные файлы, и тогда вы их совершите, как обычно. Итак, конфликты похожи на случай специального редактирования.
Ответ 2
BASE - это ревизия вашей рабочей копии, как она существует в репозитории. Другими словами, ваша ревизия без внесенных вами изменений. Итак, если вы svn update
файл или папка для HEAD, тогда BASE и HEAD равны.
Когда возникает конфликт, BASE становится ревизией до фиксации, которая противоречила вашей рабочей копии.
Запустите svn info
в элементе, чтобы увидеть его версию BASE.
Ответ 3
Это важно, когда вы просматриваете журналы, потому что svn log без url показывает ваш журнал BASE, но с URL-адресом вашего журнала HEAD, поэтому я всегда использую "svn log -rHEAD: 1", чтобы увидеть все изменения.
Ответ 4
Теория: после успешного рекурсивного обновления или переключения базовой версии всех ваших файлов становится головкой. После фиксации или частичного обновления некоторые файлы могут быть в редакции HEAD, но только после обновления, которое не пропускает файлы, вы можете быть уверены, что все файлы находятся в одной и той же версии. (Причины для пропуска - это неверующие препятствия или конфликты).
Но, зачем вам это нужно знать. Subversion должен знать это внутренне, но это знание не должно иметь большого значения для пользователя в большинстве случаев. (Subversion автоматически предупреждает вас, когда файлы устарели).
Насколько я могу судить, единственный раз, когда вам действительно нужно убедиться, что вы находитесь в стабильной версии, это когда вы создаете ветку из рабочей копии.