Різниця між оформленням замовлення та експортом у SVN


74

Яка точна різниця між замовленням SVN та експортом SVN?

З того, що я знаю, експорт не включає каталог .svn, який включає метадані, а замовлення включає цей каталог .svn. Тим не менше, у мого колеги нещодавно виникла така проблема, оскільки існує інша поведінка матеріалів, скомпільованих із джерел, які оформляють замовлення та експортують із репозиторію SVN. Обидва вони скомпільовані правильно, але той, що складений з svn exportробіт, але той, що перевірений, взагалі не працює.

PS: Компілюється матеріал - ядро ​​Linux 2.4, яке використовується у вбудованому пристрої. Зображення правильно компілюється та завантажується, але перевірене не працює. Це викликає паніку ядра під час insmod. Чому це могло взагалі статися?

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


6
Назва вашого запитання, на жаль, пропонує багато пояснень різниці між оформленням замовлення та експортом. Згадка про аварію може принести кращу допомогу.
gbarry

Відповіді:


103

svn exportпросто витягує всі файли з версії і не дозволяє керувати редакцією на ній. Він також не заповнює кожен каталог каталогами .svn.

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


16
Зверніть увагу, що це насправді не те, що він повинен знати.
gbarry

11

Як ви вже заявили, замовлення включає каталоги .svn. Таким чином, це робоча копія, і вона матиме належну інформацію для повернення комісій (якщо у вас є дозвіл). Якщо ви експортуєте, ви просто робите копію поточного стану сховища і не матимете жодного способу повернути будь-які зміни.


9

Ви повторно запускаєте замовлення або експортуєте до існуючого каталогу?

Оскільки, якщо ви, Checkout оновить робочу копію, включаючи видалення будь-яких файлів.

Але експорт просто перенесе всі файли з репозиторію в пункт призначення - якщо адресатом є той самий каталог, це означає, що будь-які файли, видалені у сховищі, НЕ будуть видалятися.

Отже, ви експортуєте копію, може працювати лише тому, що вона спирається на файл, який було видалено у сховищі?


Дякую, це працює для мене, оскільки мої видалені файли відображалися навіть після коміту, оскільки я використовував експорт svn, а не перевірку svn.
useranon

6

Будь-який шанс, що процес побудови розглядає підкаталоги і включає щось, чого не слід? До речі, ви можете зробити юридичну перевірку, а потім видалити .svn і все, що вона містить. Це має дати вам те саме, що і експорт. Спробуйте скомпілювати це, як до, так і після видалення метаданих.


Ми вже пробували це раніше, це не працює для нас, це насправді засмучує нас обох.
andycjw

Ви порівнюєте свіжу касу з експортом чи сховищем, яке колись було перевірено та оновлено до експорту? Якщо останній, у вас може лежати якийсь розлом, який втягують у збірку.

Чекай ...! Що означає "не працює"? Те, що збірка працює, і експеримент зазнає невдачі, або збірка не вдається, і тим самим доводить, що метадані - це те, що бентежить його?
gbarry

"не працює" тут означає юридичну перевірку та позбавляє .svn використання "find". -назви .svn | xargs rm -rf ', збірка працює не так, як експорт, коли вона повинна бути, оскільки, як всі знають, експорт - це просто оформлення без метаданих .svn для контролю версій
andycjw

Отже, якщо ви хочете видалити частини .svn (або, можливо, просто порожній .svn), ви можете "розділити і завоювати" і, зрештою, виявити, що саме спричиняє його невдачу. У будь-якому випадку, враховуючи нескінченний час. Ви розрізнили два зображення ядра? (а зображення модуля?)
gbarry

2

(Доповнюючи відповідь Джеральда ...) Ще одна тонка відмінність полягає в тому, що, хоча команда:

svn checkout ...repos_location/my_dir .

поміщає файли у my_dirпоточний каталог (разом із .svnпапкою)

у певних версіях svn команда:

svn export ...repos_location/my_dir .

створить папку, що викликається my_dirу поточному каталозі, а потім розмістить експортовані файли всередині неї.


2

Використовуйте експорт, якщо ви хочете завантажити (або передати комусь) проект. Якщо ви працюєте з проектом, скористайтеся замовленням.


1

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

Інша ідея і те, про що я мало що знаю, - це зовнішні дані svn, які (якщо вони використовуються) можуть вплинути на те, що перевірено у вашому проекті. Подивіться і переконайтеся, що це щось інше при експорті.


0

Дуже проста різниця. Якщо ви просто хочете побачити структуру вашого проекту, тоді йдіть на експорт.

І якщо ви хочете працювати з вашими файлами, вам потрібно оформити замовлення, оскільки воно буде включати папку .svn, яка містить метадані, що створюють робочу копію, інакше ви отримуєте помилку під час експорту.

Якщо ви це зробите, svn exportа потім відредагуєте деякі файли, а потім здійсните коміт, ви отримаєте повідомлення про помилку:

../../xxx - це не ваша робоча копія.


-1

якщо ви використовуєте черепаховий svn-клієнт - під час експорту - він відображає ..export / checkout, це заплутано, це лише експорт. лише переглядати / читати експорт використання, для здійснення використання - "замовлення"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.