Як додати існуючу папку з файлами до SVN?


84

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

Я зазвичай роблю:

  1. svn co батьківський каталог, де я хочу створити нову папку для зберігання мого коду.
  2. svn mkdir, щоб зробити каталог, в який я хочу помістити свій код.
  3. Скопіюйте та вставте мій код.
  4. svn коміт .
  5. Видалити поточний каталог робочого коду.
  6. Повторно створіть мій робочий каталог коду, використовуючи svn co .

2
Можливий дублікат stackoverflow.com/questions/2431389/…
pmod

Відповіді:


134

Скажімо, у мене є код у каталозі ~/local_dir/myNewApp, і я хочу помістити його в розділ ' https://svn.host/existing_path/myNewApp ' (маючи можливість ігнорувати деякі двійкові файли, бібліотеки постачальників тощо).

  1. Створіть порожню папку у сховищі svn mkdir https://svn.host/existing_path/myNewApp
  2. Перейдіть до батьківського каталогу проекту, cd ~/local_dir
  3. Перевірте порожній каталог над локальною папкою. Не бійтеся - локальні файли не буде видалено. svn co https://svn.host/existing_path/myNewApp. Якщо локальна назва вашої папки відрізняється від назви сховища, ви повинні вказати її як додатковий аргумент.
  4. Ви бачите, що svn stтепер усі ваші файли відображатимуться як ?, що означає, що вони зараз не перебувають під контролем редагування
  5. Виконуйте svn addфайли, які потрібно додати до сховища, та додайте інші svn:ignore. Ви можете знайти деякі корисні опції svn help add, наприклад, --parentsабо --depth empty, якщо ви хочете вибірково додати лише деякі файли / папки.
  6. Здійснити з svn ci

Пункт 5: Ви можете додати всі файли / директорії вашого робочого каталогу таким чином у bash: find . -name .svn -prune -o -print0|xargs -0 svn add
Ніколас М

1
Найкращі рекомендації, які я коли-небудь бачив для отримання нових матеріалів у svn.
Колін 'Харт

як ви це робите: "Якщо ваша папка має іншу назву локально, ніж у репо, ви повинні вказати її як додатковий аргумент"
Kristof Pal

1
@KristofPal:svn co https://svn.host/existing_path/myNewApp ~/local_dir/localNameOfFolder
qbolec

1
Дякую @qbolec, за те, що "не бійся". +1 на всі, "найкраща відповідь". Як підказка для тих, хто все ще може боятися: ви можете створити резервну копію своєї роботи, якщо все ще боїтеся.
Стефан Самуїл

55

Якщо я правильно зрозумів ваш варіант використання, я пропоную спробувати використовувати svn add, щоб поставити нову папку під версію, див. Тут . Далі буде додано нову папку з файлами рекурсивно під контролем версій (якщо ви знаходитесь у дійсній робочій копії):

svn add new_folder
svn commit -m "Add New folder to the project"

Якщо у вас немає робочої копії, створіть її за допомогою svn checkout , скопіюйте туди new_folder і виконайте наведені вище дії.

АБО

Спробуйте імпортувати svn , дивіться тут ; наступне створить нову папку та завантажить файли до сховища:

svn import -m "Import new folder to the project" new_folder \
        http://SVN_REPO/repos/trunk/new_folder

Також зверніть увагу, що:

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


Але батьківська папка не перебуває під контролем версій. Звідки воно знає, куди його помістити у сховище svn
Siecje,

Мені незрозуміло, де тоді знаходяться ваші папки, ви працюєте не в "робочій копії"?
pmod

У мене вже є сховище svn з папками. Я створюю файли та папки, які не є svn, і хотів би додати їх до сховища. Я роблю це зараз, щоб перевірити каталог вище, куди я хочу помістити свій проект. Потім я копіюю пасту до місця оформлення замовлення і додаю туди svn.
Siecje,

@Siecje Думаю, тепер я розумію, що ти маєш на увазі
pmod

тож я повинен зробити перевірку, що означає, що мені потрібно видалити файли та перезавантажити їх із SVN? Отже, для файлів веб-сайтів сайт повинен зайти на секунду, поки я це роблю?
Siecje,

9

Я не використовую команди. Ви повинні зробити це за допомогою графічного інтерфейсу:

  • Клацніть правою кнопкою миші порожній простір у папці Мої документи, виберіть TortoiseSVN> Repo-браузер.
  • Введіть http: // subversion ... (шлях до вашого URL-адреси до вашого сервера / каталогу Subversion, до якого ви збережете) як ваш шлях і виберіть OK
  • Клацніть правою кнопкою миші кореневий каталог у Repo та виберіть Додати папку . Дайте йому назву вашого проекту і створіть його.
  • Клацніть правою кнопкою миші папку проекту в браузері Repo та виберіть Checkout . Каталог Checkout буде вашимVisual Studio\Projects\{your project} папкою. Виберіть ОК.
  • Ви отримаєте попередження, що папка не порожня. Скажіть Так, щоб замовити / експортувати до цієї папки - це не перезапише файли вашого проекту.
  • Відкрийте папку проекту. Ви побачите знаки запитання в папках, пов’язаних з вашим проектом VS, які ще не були додані до Subversion. Виділіть ці папки за допомогою Ctrl + Клацніть, потім клацніть правою кнопкою миші один із вибраних елементів і виберіть TortoiseSVN> Додати
  • Виберіть ОК у підказці
  • Ваші файли слід додати. Виберіть "ОК" на "Додати готово!" діалогове вікно
  • Клацніть правою кнопкою миші в порожній області папки та виберіть Оновити. Зараз ви побачите значки “+” у папках / файлах
  • Клацніть ще раз правою кнопкою миші порожню область у папці та виберіть SVN коміт
  • Додайте повідомлення про те, що ви вчиняєте, і натисніть OK

1

Якщо метою є додавання локальної / робочої копії до SVN, я робив це наступним чином.

Примітка: я використовую клієнт TortoiseSVN, і ці кроки передбачають, що у вас вже встановлений клієнт TortoiseSVN.

  1. У мене є проект (Тест-4.2.2) у моєму місцевому. Я хочу завантажити / додати його до сховища SVN.
  2. Використовуючи репо-браузер TortoiseSVN, я створив порожній каталог "Test-4.2.2"
  3. У своєму локальному я перейменував існуючий каталог "Test-4.2.2" на "Test-4.2.2.1" (тимчасовий)
  4. Оформіть пустий "Тест-4.2.2" від SVN до вашого локального
  5. Скопіюйте всі підкаталоги під 4.2.2.1 до цього каталогу перевірки 4.2.2
  6. Тепер клацніть правою кнопкою миші "Тест-4.2.2" і зафіксуйте.
  7. Видаліть тимчасову папку "Test-4.2.2.1"

1

У Windows 7 я зробив це:

  1. Ви встановили SVN та Tornoise SVN? Якщо ні, пошукайте в Google і зробіть це зараз.
  2. Перейдіть до папки SVN, де у вас можуть бути інші репозиторії (скорочення від сховища) (або якщо ви створюєте його з нуля, виберіть розташування диска C, диска D тощо або мережевий шлях).
  3. Створіть нову папку для зберігання нового сховища. Називайте це так само, як і назва вашого проекту
  4. Клацніть правою кнопкою миші папку та виберіть Tortoise SVN -> Створити сховище тут
  5. Скажіть так, щоб створити структуру папок
  6. Клацніть OK. Ви повинні побачити нову піктограму, схожу на "хвилю" поруч із новою папкою / репо
  7. Клацніть правою кнопкою миші нове репо та виберіть SVN Repo Browser
  8. Клацніть правою кнопкою миші `` багажник ''
  9. Виберіть ДОДАТИ папку ... і наведіть вказівник на структуру папок вашого проекту, що розробляється.
  10. Натисніть OK, і SVN додасть структуру вашої папки. Будьте терплячі! Схоже, SVN аварійно завершив роботу. Не хвилюйся. Це робить свою роботу.

Готово!


0

3 кроки:

  • Відкрийте "Repo Browser" (Використовуйте посилання yr батьківської папки).
  • Клацніть правою кнопкою миші Виберіть "Додати папку".
  • Перейдіть до своєї папки.

введіть тут опис зображення


Таким чином, ви не можете додати папку, яка не існує. "Додати папку" дасть вам вікно Провідника, щоб ви могли вказати на існуючу папку, а потім дати вікно коміту, щоб ви могли додати його до Subversion. Це не для створення нової папки на локальній стороні - це все одно потрібно буде зробити вручну та заповнити там, тоді це може бути використано для передачі її вмісту Subversion. Це дає лише половину історії.
vapcguy

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