Разница между оформлением заказа и экспортом в SVN - PullRequest
72 голосов
/ 07 января 2009

Какая разница между проверкой SVN и экспортом SVN?

Из того, что я знаю, экспорт не включает каталог .svn, который включает метаданные, а извлечение включает этот каталог .svn. Тем не менее, у моего коллеги недавно возникла проблема, связанная с тем, что вещи, скомпилированные из исходников, извлекаются и экспортируются из репозитория SVN. Они оба скомпилированы правильно, но тот, который скомпилирован из svn export, работает, но тот, который извлечен, не работает вообще.

PS: Компилируемый материал - это ядро ​​Linux 2.4, которое используется во встроенном устройстве. Изображение компилируется и загружается правильно, но проверенное не работает. Это вызывает панику ядра во время insmod. Почему это вообще могло произойти?

PPS: мы попробовали контрольную сумму и инструмент сравнения, чтобы проверить разницу между двумя каталогами, которые экспортируются и извлекаются из SVN. Они оба одинаковы, за исключением каталога .svn.

Ответы [ 8 ]

101 голосов
/ 07 января 2009

svn export просто извлекает все файлы из ревизии и не разрешает контроль ревизии на ней. Он также не засоряет каждый каталог каталогами .svn.

svn checkout позволяет использовать контроль версий в созданной директории, например, ваши стандартные команды, такие как svn update и svn commit.

11 голосов
/ 07 января 2009

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

8 голосов
/ 22 февраля 2011

Вы повторно запускаете оформление заказа или экспортируете в существующий каталог?

Потому что, если вы, Checkout обновит рабочую копию, включая удаление любых файлов.

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

То есть экспортная копия может работать только потому, что она полагается на файл, который был удален в хранилище?

6 голосов
/ 07 января 2009

Есть ли шанс, что процесс сборки просматривает подкаталоги и включает что-то, чего не должно быть? Кстати, вы можете сделать легальную проверку, а затем удалить .svn и все, что он содержит. Это должно дать вам то же самое, что и экспорт. Попробуйте скомпилировать его до и после удаления метаданных.

2 голосов
/ 12 августа 2011

(чтобы дополнить ответ Джеральда ...) Еще одно тонкое отличие состоит в том, что, хотя команда:

svn checkout ...repos_location/my_dir .

помещает файлы из my_dir в текущий каталог (с папкой .svn)

в некоторых версиях svn, команда:

svn export ...repos_location/my_dir .

создаст папку с именем my_dir в текущем каталоге и затем поместит в нее экспортированные файлы.

1 голос
/ 07 января 2009

Дополнительные размышления. Вы сказали, что падает insmod. Insmod загружает модули. Модули строятся в другой операции компиляции из сборки ядра. Ядро и модули должны быть собраны из одних и тех же заголовков и так далее. Все ли модули собраны во время сборки ядра или они "существуют"?

Другая идея, о которой я мало знаю, это svn externals, которая (если она используется) может повлиять на то, что проверено в вашем проекте. Посмотрите, не отличается ли это при экспорте.

1 голос
/ 07 января 2009

Используйте экспорт, если вы хотите загрузить (или передать кому-то) проект. Если вы работаете с проектом, используйте оформить заказ.

0 голосов
/ 17 октября 2013

Очень простая разница. Если вы просто хотите увидеть структуру вашего проекта, тогда идите на экспорт.

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

Если вы выполните svn export, а затем отредактируете некоторые файлы, а затем подтвердите, вы получите ошибку:

.. / .. / xxx не ваша рабочая копия.

...