Как добавить в SVN существующую папку с файлами?

85

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

Что я обычно делаю:

  1. svn co родительский каталог, в котором я хочу создать новую папку для хранения моего кода.
  2. svn mkdir, чтобы создать каталог, в который я хочу поместить свой код.
  3. Скопируйте и вставьте мой код.
  4. svn совершить .
  5. Удалить мой текущий рабочий каталог кода.
  6. Восстановите мой рабочий каталог кода, используя svn co .
Siecje
источник
2
Возможный дубликат на stackoverflow.com/questions/2431389/…
pmod

Ответы:

135

Допустим, у меня есть код в каталоге ~/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
qbolec
источник
По пункту 5: Вы можете добавить все файлы / каталоги рабочего каталога в bash следующим образом: find . -name .svn -prune -o -print0|xargs -0 svn add
Николас М.
1
Лучшее руководство, которое я когда-либо видел, для добавления новых вещей в svn.
Colin 't Hart
как это сделать: «Если ваша папка имеет другое имя локально, чем в репо, вы должны указать его в качестве дополнительного аргумента»
Кристоф Пал
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 import , см. Здесь ; следующее создаст новую папку и загрузит файлы в репозиторий:

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

Также обратите внимание, что:

После импорта данных обратите внимание, что исходное дерево не находится под контролем версий. Для начала работы вам еще нужно svn checkout свежую рабочую копию дерева

pmod
источник
Но родительская папка не находится под контролем версий. Как он узнает, куда поместить его в репозиторий svn
Siecje
Мне непонятно, где тогда ваши папки, не в "рабочей копии" вы работаете?
pmod
У меня уже есть репозиторий svn с папками. Я создаю файлы и папку, отличные от svn, и хочу добавить их в репозиторий. Я делаю это сейчас, проверяя каталог выше, в который я хочу поместить свой проект. Затем я копирую пасту в место оформления заказа и добавляю туда svn.
Siecje
@Siecje Я думаю, теперь я понимаю, что вы имеете в виду
pmod
поэтому мне нужно выполнить проверку, что означает, что мне нужно удалить файлы и повторно загрузить их из SVN? Значит, для файлов веб-сайта сайт должен на секунду отключиться, пока я это делаю?
Siecje
9

Я не использую команды. Вы должны иметь возможность сделать это с помощью графического интерфейса:

  • Щелкните правой кнопкой мыши пустое место в папке «Мои документы» и выберите TortoiseSVN> Repo-browser.
  • Введите http: // subversion ... (ваш URL-путь к вашему серверу / каталогу Subversion, в который вы будете сохранять) в качестве пути и нажмите OK
  • Щелкните правой кнопкой мыши корневой каталог в Repo и выберите Добавить папку . Дайте ему имя вашего проекта и создайте его.
  • Щелкните правой кнопкой мыши папку проекта в репо-браузере и выберите « Оформить заказ» . Каталог Checkout будет вашей Visual Studio\Projects\{your project}папкой. Выберите ОК.
  • Вы получите предупреждение о том, что папка не пуста. Скажите « Да» при оформлении заказа / экспорте в эту папку - файлы проекта не будут перезаписаны.
  • Откройте папку с вашим проектом. Вы увидите вопросительные знаки в папках, связанных с вашим проектом VS, которые еще не были добавлены в Subversion. Выберите эти папки, используя Ctrl + щелчок, затем щелкните правой кнопкой мыши один из выбранных элементов и выберите TortoiseSVN> Добавить
  • Выберите ОК в подсказке
  • Ваши файлы должны добавить. Нажмите ОК в окне "Добавить завершено!" диалог
  • Щелкните правой кнопкой мыши пустую область папки и выберите «Обновить». Теперь вы увидите значки «+» на папках / файлах.
  • Еще раз щелкните правой кнопкой мыши пустую область в папке и выберите SVN Commit.
  • Добавьте сообщение о том, что вы делаете, и нажмите ОК.
vapcguy
источник
1

Если намерение заключается в добавлении локальной / рабочей копии в SVN, я делал это следующим образом.

Примечание: я использую клиент TortoiseSVN, и эти шаги предполагают, что у вас уже установлен клиент TortoiseSVN.

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

В Windows 7 я делал так:

  1. Вы установили SVN и Tortoise SVN? Если нет, погуглите их и сделайте это сейчас.
  2. Перейдите в свою папку SVN, где у вас могут быть другие репозитории (сокращенно от репозитория) (или, если вы создаете его с нуля, выберите местоположение диска C, диска D и т. Д. Или сетевого пути).
  3. Создайте новую папку для хранения вашего нового репозитория. Назовите это тем же именем, что и название вашего проекта
  4. Щелкните правой кнопкой мыши папку и выберите Tortoise SVN -> Create Repository здесь
  5. Скажите да, чтобы создать структуру папки
  6. Щелкните ОК. Вы должны увидеть новый значок, похожий на «волну», рядом с вашей новой папкой / репозиторием.
  7. Щелкните правой кнопкой мыши новое репо и выберите SVN Repo Browser.
  8. Щелкните правой кнопкой мыши "ствол"
  9. Выберите ADD Folder ... и укажите на структуру папок вашего проекта в разработке.
  10. Нажмите OK, и SVN ДОБАВИТ вашу структуру папок. Будьте терпеливы! Похоже, SVN разбился / завис. Не волнуйся. Он делает свою работу.

Готово!

Фанданго68
источник
0

3 шага:

  • Откройте «Repo Browser» (используйте ссылку на родительскую папку).
  • Щелкните правой кнопкой мыши и выберите «Добавить папку».
  • Перейдите в свою папку.

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

Ариндам Ройчоудхури
источник
Таким образом вы не можете добавить папку, которой не существует. «Добавить папку» откроет вам окно проводника, чтобы вы могли указать на существующую папку, а затем отобразить окно фиксации, чтобы вы могли добавить ее в Subversion. Это не для создания новой папки на локальной стороне - это все равно нужно будет сделать вручную и заполнить там, а затем это можно будет использовать для фиксации ее содержимого в Subversion. Это только половина истории.
vapcguy
0

Давай попробуем .. У меня работает ..

svn add * --force
Партибан Саундрам
источник