| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > УП: Инструменты > SVN: Как перенести папку в другой репозиторий |
| Автор: Bose 14.3.2008, 18:08 |
| У меня вопрос по SVN. Как перенести папку из одного репозитория в другой с сохранением истории изменений? Что-то я никак не могу найти информации по этом вопросу. И возможно ли такое вообще? п.с. Для работы с репозиторием использую TortoiseSVN. |
| Автор: Daevaorn 14.3.2008, 18:24 |
| скорей всего это невозможно. у каждого репозитория своя история изменений и что делать, если скопировать данные из одно в другой? |
| Автор: JackYF 14.3.2008, 18:41 |
| Наваяй скрипт, который вытаскивает ревизии с 1 до HEAD, лог к ревизии и коммитит в другой репозиторий. Это если очень надо. |
| Автор: smartov 14.3.2008, 20:22 |
| Возможно удастся как-то наколдовать с помощью svn merge, но я не уверен. Надо пробовать Если с помощью него не удастся, то или скрипт или никак |
| Автор: maxim1000 14.3.2008, 20:54 | ||
если я не ошибаюсь, отдельного скрипта для этого не нужно: можно воспользоваться "svnadmin dump" и "svnadmin load" однако, здесь есть ещё одна проблема: всё, что было в корне второго репозитория, попадёт в корень первого, т.е. возможны наложения, так что, наверное, стоит корень второго репозитория перемещать в поддиректорию первого, для этого перед использованием "svnadmin load" нужно позаменять пути (там формат текстовый (ну или почти текстовый - не знаю, как там с бинарниками), так что можно использовать find and replace сам такого не пробовал, так что мог чего-то не учесть, но вроде выглядит работающе... |
| Автор: Bose 14.3.2008, 21:04 | ||||
Спасибо за идеи. Пока что это звучит слишком грозно для меня. |
| Автор: JackYF 14.3.2008, 21:11 |
дело в том, что это нештатная ситуация |
| Автор: maxim1000 15.3.2008, 00:32 |
та тут ничего грозного нету просто "svnadmin dump /path2/repository2 > qqq.txt" потом "svnadmin load /path1/repository1 < qqq.txt" а перед этим можно в repository1 в корне создать папкус каким-нибудь неповторимым именем и скинуть туда всё из корня, потом можно выполнять эти две команды, получится в корне созданная папка с предыдущим содержимым корня и остальное из repository2 только перед всеми этими операциями я бы посоветовал скопировать репозиторий или его дамп в безопасное место |
| Автор: Bose 15.3.2008, 16:26 | ||||
Теперь вопросов стало ещё больше. =)
а где взять svnadmin ? У меня на компе установлен TortoiseSVN, там такого файла я не нашёл. Доступа к серверу у меня нет. При желании конечно, могу попросить нашего админа пустить "порулить" серваком - но вообще подвергать все исходники риску не хочется.
А как сделать это? |
| Автор: maxim1000 15.3.2008, 23:17 | ||||
а... там, наверное, нету впрочем, svn можно скачать (достаточно в google набрать subversion и перейти по первой ссылке) там будут утилиты командной строки, среди них и svnadmin
тут вопрос в том, кто у вас занимается репозиториями, ИМХО, эта задача как раз для него тогда стоит сделать так: svnadmin dump /path1/repository1 > 1.txt svnadmin dump /path2/repository2 > 2.txt создать третий репозиторий в нужном месте svnadmin load /path3/repository3 < 1.txt svnadmin load /path3/repository3 < 2.txt при таком подходе доступ к каждому из двух репозиториев осуществляется только на чтение, так что ничего испортить не получится лучше пользоваться подходом с третьим репозиторием - тогда никакой угрозы нету (ну разве, если пути перепутать) впрочем, если репозиторий удалённый, то возможно (и вполне естественно), что не у всех будут права на выполнение подобных действий, так что всё-таки лучше обратиться к человеку, администрирующему репозитории |