Subversion - Чем отличаются команды проверки SVN и обновления SVN? - PullRequest
42 голосов
/ 12 февраля 2010

Я понимаю, что команда "SVN checkout" выполнит первоначальное получение файлов из хранилища Subversion и доставит их локально в ваш рабочий каталог / копию, а команда "SVN update" получит изменения в файле ( s) из хранилища, если изменения были сделаны другими.

Мне кажется, что «обновление» - это просто особый случай «проверки», то есть когда происходит проверка, он получает все файлы, поскольку ни один из них еще не существует локально, и, следовательно, ВСЕ файлы изменились. ", и что за кадром эти команды делают в основном то же самое. Я предполагаю, что команды существуют отдельно просто для упрощения?

Или есть ли другие различия между командами, например, "SVN update" получает файлы, получает новые файлы (файлы, которые существуют в хранилище, которых у вас нет в рабочей копии), или просто обновляет существующие файлы?

Ответы [ 6 ]

43 голосов
/ 12 февраля 2010

На мой взгляд, большая разница в том, что checkout создает рабочую копию, тогда как update вносит изменения в существующую рабочую копию.

13 голосов
/ 15 февраля 2010

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

svn export копирует все версионные файлы из указанного каталога в хранилище с заданной ревизией (по умолчанию HEAD) и копирует их на локальный компьютер, но создает стандартную иерархию каталогов. (Он не создает рабочую копию, которую можно обновить или вернуть обратно).

svn update применяет изменения к существующей рабочей копии. Если при этом обнаруживается конфликт, пользователь получает предупреждение и должен разрешить его, прежде чем сможет внести какие-либо изменения. При использовании svn commit требуется, чтобы рабочая копия, которая должна быть зафиксирована, была актуальной (то есть той же ревизии, что и HEAD).

10 голосов
/ 12 февраля 2010

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

3 голосов
/ 12 февраля 2010

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

ОБНОВЛЕНИЕ - это операция, выполняемая над рабочей копией Subversion; нет .svn каталоги, нет ОБНОВЛЕНИЕ. CHECKOUT - операция, которая создает рабочую копию.

2 голосов
/ 21 февраля 2017

Во время использования SVN существенная разница между извлечением и обновлением заключается в следующем: команду checkout можно использовать только один раз , чтобы создать связь между локальным каталогом и хранилищем (в версии control) и скопировать все файлы из корневого хранилища в локальный рабочий каталог. После этого при использовании checkout для обновления копий в локальном каталоге появятся следующие ошибки:

svn: E175002: Невозможно подключиться к хранилищу по URL-адресу 'https://********'.

svn: E175002: Запрос OPTIONS вернул неверный XML в ответе: ****. "

Единственный способ обновить текущие версии в локальном каталоге - это использовать команду svn update .

2 голосов
/ 15 ноября 2013

svn update приносит только разницу в файлах от версии пользователя до последней доступной версии. Если нет разницы, никаких действий.

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

...