2009-10-26 3 views
3

Скажем, у меня есть структура каталогов, как этотКак добавить родительский каталог в SVN?

dir1 
    dir2 
    dir3 

dir2 уже находится под контролем версий, в то время как dir1 нет. Теперь я понимаю, что я хотел бы иметь dir1 под управлением версии (а может и позже dir3 и т. Д.). Как я могу это сделать и правильно отражать изменения в репозитории?

Если я просто двигаться dir2 из dir1, добавить dir1 в SVN и двигаться dir2 обратно в dir1, это, вероятно, уничтожит историю версий dir2. Что еще более усложняет то, что dir2 содержит много файлов, которые не находятся под управлением версиями (они игнорируются), поэтому dir2 не может быть (полностью) воссоздан из репозитория.

ответ

0
  • создать dir1 кроме того dir2
  • движение dir2 в dir1

Вы можете сделать это на сервере (с помощью URL-адреса) или в вашей рабочей копии (с использованием файловой системы пути). В последнем случае вам придется совершать потом.

+0

Я попробовал это на сервере (то есть 'СВН MkDir URL/dir1; svn mv url/dir2 url/dir1'), который преуспел. Но когда я попробовал 'svn up', я получаю' svn: Не удалось добавить каталог 'dir2': объект с тем же именем уже существует'? – fuenfundachtzig

+0

Вам нужно будет сделать новую оплату в новом месте. – sbi

+0

Хотелось бы избежать проверки (см. Вопрос). Таким образом, я попытался сделать это локально, теперь у меня есть 'dir11' на том же уровне, что и' dir2', но 'svn mv dir2 dir11' дает' svn: Невозможно заблокировать 'dir11''. – fuenfundachtzig

2

Вы правы, повторный импорт dir2 не сохранит историю вашего существующего dir2.

Это должно сделать трюк (предполагая, что путь является хранилище URL):

  1. СВН MkDir путь/dir1
  2. СВН мв путь/dir2 путь/dir1
+0

Сбой с 'svn: Нет поддержки для репозиций <--> Рабочая копия перемещается'. – fuenfundachtzig

+0

Вы пытались смешивать пути рабочей копии и URL-адреса репозиции таким образом, чтобы это не сработало. Попробуйте либо все рабочие пути, либо все URL-адреса. – sbi

+0

ОК, тогда следует изменить второй пункт выше, иначе он вводит в заблуждение. – fuenfundachtzig

0

Существует еще одна возможность, хотя это может быть не совсем то, что вы ищете: SVN externals.

  1. Заезд dir1.

  2. Добавить dir2 в SVN внешней по отношению к dir1 S Свойства:

-

$ svn propget svn:externals dir1 
dir2 svn://repository/dir2