2013-01-22 3 views
0

Я сравниваю SVN и Git.Включает ли 'svn update' историю репозитория?

Я знаю, что «svn checkout» - это то же, что и «git clone», в том числе и история оригинального репозитория.

В Git, когда-то «git clone» завершен, мне больше не нужно «git clone», чтобы получить историю исходного репозитория, потому что я могу «git fetch» ​​и «git merge», которые легче и быстрее, чем «git clone». Таким образом, «git fetch» ​​и «git merge» могут поддерживать мой репозиторий как идеальное резервное копирование исходного репозитория.

А как насчет SVN? «svn checkout» - очень дорогостоящая работа, потому что она касается всего хранилища. Так что делать «svn checkout», когда я хочу, не является хорошим выбором. 'svn update' намного легче, чем 'svn checkout', потому что 'svn update' поставляет только обновленные вещи.

Интересно, если 'svn update' включает в себя историю исходного репозитория. Если это так, 'svn update' может сохранить мой репозиторий в качестве резервной копии исходного. Если этого не происходит, нет простого способа сохранить мой репозиторий в качестве резервной копии исходного.

Пожалуйста, дайте мне хороший ответ ^^

+2

AFAIR 'svn checkout' выводит только последнюю версию из репозитория, а не полную историю. Если вы хотите получить доступ к более старым версиям, вам нужно снова подключиться к серверу SVN. – Robert

ответ

1

SVN хранит только рабочую копию локально. Это означает, что svn checkout создает рабочую копию текущего HEAD (и svn update обновляет существующую рабочую копию текущего HEAD), но история фиксации все еще хранится на сервере (если вы делаете, например, svn log, фиксация история загружается с сервера).

Git с другой стороны хранит весь репозиторий - не только рабочую копию («рабочее дерево» в git-talk), но и всю историю фиксации.

Если вы хотите вернуть рабочую копию SVN в более старую версию, вы можете сделать это с помощью svn update -r[revision number], но затем SVN вытащит указанную ревизию с сервера.

0

Чтобы сохранить резервную копию вашего хранилища, а не проверять это, я настоятельно рекомендую вам посмотреть на использование svnadmin dump или svnadmin hotcopy

+0

[Официальная документация по резервным хранилищам] (http://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html#svn.reposadmin.maint.backup) – alroc

2

Ваше первое впечатление неправильный: svn checkout is не так же, как git clone.

svn checkout только выбирает последнюю версию, а svn update обновляется до последней версии. Чтобы получить доступ к истории проекта любым способом, вы должны связаться с сервером.

+0

И это на самом деле одна из большие различия между DVCS и регулярным VCS. –