2009-08-17 4 views
1

У нас здесь довольно сложный репозиторий, и я стараюсь извлечь максимальную пользу из нашего недавнего переключения на Subversion. У нас обычно есть такие вещи, как это:Обязательно для нескольких модулей одновременно в Subversion

parent_dir (unversioned) 
->module1_dir (versioned) 
->module2_dir (versioned) 
->module3_dir (versioned) 
->etc 

И так далее. Где modules1-x - это, как правило, различные модули всей одной ветви. Это довольно распространенный сценарий для изменения кода в модуле say1 (сервер) и module2 (клиент). Раньше в CVS я просто вручную проверял изменения каждого модуля отдельно. То, что я хотел бы сделать, - это совершить как изменения моего сервера, так и клиента для каждого (изменения в каждом из двух разных модулей (или, возможно, больше модулей)) одновременно.

Есть ли способ сделать это в Subversion (и особенно в Tortoise SVN/Windows)? Если я просто перейдите к этой parent_dir выберите папки и не совершить, диалог фиксации придумывает и даже перечисляет все мои файлы, но фактическое обязательство терпит неудачу, говоря:

Error 'D:\parent_dir' is not a working copy 

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

Бонусные баллы: есть ли способ, которым я могу фиксировать изменения нескольких модулей на несколько ветвей одновременно? Например. Я делаю изменение клиента + сервера, которое нужно переходить в ветви версии 1.0 и 2.0.

ответ

2

У модуля 1, module2 и module3 есть общий родительский элемент в репозитории? Если это так, вы можете просто проверить этот родительский каталог. (предоставлено вам в конечном итоге с большим количеством дополнительных файлов в вашей рабочей копии, которые не являются релевантными)

+0

Нет, у них нет общего родителя. Это, безусловно, упростит эту цепочку. – Morinar

+2

У них есть общий родитель - корень репозитория. Если вы можете переустановить свои проверенные каталоги, вы можете сделать разреженный выезд из корня и получить только файлы и каталоги, которые вам нужны. –

+0

И если вы не можете их переместить, вы все равно сможете это сделать, а затем использовать соединения файловой системы, чтобы связать место, в котором они сейчас находятся, в том месте, где они должны находиться в разреженной кассе. –

-1

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

+0

Несомненно. Мы используем Slik SVN для наших автоматизированных сборок ANT, поэтому я уже установил это. Сценарий не был бы таким уж сложным, но я бы потерял легкость использования, которая исходит из графического интерфейса Tortoise, что определенно меня огорчило. – Morinar

1

В Subversion 1.7 возможно внесение изменений в несколько модулей из командной строки. Просто это нравится:

$ svn commit module1_dir/ module2_dir/ ... 

В то время как я не могу попробовать его в TortoiseSVN, ошибка вы упоминали происходит при выполнении той же команды в Subversion 1.6 и более ранних версий. Поэтому я считаю разумным полагать, что он «просто работает» в TortoiseSVN 1.7.X.