2009-05-18 3 views
7

Я пробовал использовать svn ci dir/a dir/b -m «мой комментарий» , но это не сработает. Я также использовал svn ci dir/a/* dir/b/* -m «мой комментарий» , и он тоже не работает.Как я могу выполнить несколько каталогов одновременно с помощью subversion?

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

+0

так что есть много других измененных файлов в say dir/c, которые вы не хотите совершать? – dotjoe

+0

Есть много измененных файлов в каталогах, которые я хочу проверить. Я знаю, что svn commit будет только проверять файлы, которые я модифицировал, и это то, что я хочу. Я не беспокоюсь о файлах, которые я не хочу совершать, если это отвечает на ваш вопрос .. – 2009-05-18 19:14:37

ответ

1

Я думаю, что вы только есть 1 вариант: проверьте в каталоге-каталоге, который имеет оба эти подраздела.

Если они уже не организованы так (то есть они оба являются каталогами верхнего уровня в репо), тогда вы не можете многое сделать - команды svn работают только в одном каталоге.

+0

Они оба имеют общий каталог верхнего уровня, но этот каталог довольно ... огромный, со многими другими дочерними папками. – 2009-05-18 17:32:38

+0

достаточно справедливо, это просто означает, что svn займет больше времени, чтобы найти их, чтобы найти все файлы, которые необходимо совершить. Если этого не произойдет, то это на удивление быстро. Попробуйте, используя svn status, чтобы увидеть (статус займет больше времени, чем ci BTW). – gbjbaanb

+0

svn commit будет работать в нескольких каталогах, но только если они все находятся в одной и той же рабочей копии. Если вам не нужны вещи, вы можете использовать разреженные каталоги subversion 1.5, чтобы сделать меньшую, более кратковременную рабочую копию. – crashmstr

4
svn add dir/a 
svn add dir/b 
svn commit 

Хотя, скорее, вы думаете:

svn add dir/* 
svn commit 
+0

Каталоги уже находятся в репозитории, я просто хочу проверить файлы, которые были изменены на моем локальном. – 2009-05-18 17:30:28

+0

Если они уже добавлены, просто выполнение «svn commit» покроет его. –

0

Это легко, если вы выходите из папки более высокого уровня, где находятся а и b. Поэтому, если ваша рабочая копия «dir» и a и b имеют изменения, зафиксируйте «dir», чтобы зафиксировать изменения для обоих. Я делаю это все время.

Edit:
Чтобы совершить более одной папки, вам нужно будет для них, чтобы быть в одной и той же рабочей копии.

Если вы беспокоитесь о том, что слишком много, чтобы процесс, вы можете попробовать редкую проверку только папки, которые нужны, и тогда вы могли бы просто зафиксировать базовый каталог или подкаталогов по мере необходимости без накладных расходов на другом проекты.

Sparse Directories Information

8

Вам может понадобиться указать, что делает «но это не работает» означает, потому что он отлично работает здесь:

D:\Projects>svn commit -m 'test1' test\aaa "test\aaa bbb ccc" 
Sending  test\aaa\aaa222\xxx.txt 
Sending  test\aaa bbb ccc\aaa.txt 
Transmitting file data .. 
Committed revision 8. 

D:\Projects> 
+0

Интересно, являются ли они отдельными рабочими копиями? Неужели это не удастся? – crashmstr

+0

Да, это провалится. OTOH мы не знаем компоновки рабочих копий OP, так что это может быть или не быть причиной того, что она «не работает». –

+0

C: \ zoo> svn ci c: \ zoo \ tiger c: \ zoo \ lion -m "мой комментарий" svn: 'C: \ zoo' не является рабочей копией это ошибка, которую я получаю. Он будет работать, если я просто передам ему один каталог, но когда я дам ему второй каталог, он ошибается. – 2009-05-18 19:11:07

0

Рассмотрите возможность использования SVN: Externals свойство для проверки вне ее части репозиторий. Вы можете выбрать, какие каталоги будут получать, а затем совершить несколько пунктов назначения за один шаг. Мы использовали этот подход на некоторое время с большим успехом.

+0

Я говорю о клиенте TortoiseSVN ... – GregC

+0

Я бы настоятельно предложил посмотреть на редкие каталоги в SVN сейчас, если вы используете Tortoise, тогда его так просто, как вы можете получить - это здорово. – gbjbaanb

0

Учитывая ниже в запросе

  1. у вас есть много файлов, полученные из хранилища в нескольких каталогов, и многие из них получили модифицированы и вы не помните, какие файлы были изменены, и вы будете трудно слить один файл за раз, затем сделайте следующее

перейти в каталог верхнего уровня и запустите команду

svn ci -m "comments" 

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

0

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

/web/lib 
/web/htdocs 
... 

... что мне нужно было в отдельных рабочих копий (соответственно):

C:/.../web/lib 
C:/.../htdocs/cbs 

Я решил это, имея «мастер» рабочую копию /web в C:/.../web и создание жесткой линии (или соединения NTFS) в C:/.../htdocs/cbs «указывая» на C:/.../web/htdocs. Поэтому всякий раз, когда я делаю локальные изменения в одной из этих рабочих копий, я всегда фиксирую C:/.../web, что, естественно, содержит изменения обеих рабочих копий.

Я надеюсь, что этот способ может быть полезен для вас.

0

Прошло много времени с тех пор, как этот вопрос был задан, но у меня есть обновление для любых поздних прибытий.

Если у вас есть дерево, как дир/а, реж/б, реж/с, режем/д .... и хотите вносить изменения только в подпапках а и б, следующая команда работа:

svn ci dir/a/* dir/b/* -m "мой комментарий"

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

Смежные вопросы