Подтвердить что ты не робот

Как я могу выполнить одно связывание SVN с несколькими внешними в командной строке?

Это может быть невозможно, но я все равно спрошу.

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

То есть, четыре директивы svn: externals добавляют все содержимое в каждую из каталогов проверки.

Когда я делаю фиксацию через Eclipse (/Subclipse), я могу совершать изменения во всех внешних проектах за один раз, что хорошо, потому что они - только отдельные подпроекты в одном хранилище, и это позволяет мне избегать делая 4 отдельных коммита в строке для одного и того же репо.

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

4b9b3361

Ответ 1

К сожалению, ваше предположение было правильным. Текущий инструмент командной строки subversion не будет перезаписываться в разрозненные внешние копии рабочих копий во время фиксации. Eclipse, вероятно, выясняет, что все это коренится и настраивает все так, чтобы он выполнял только транзакцию с фиксацией.

Этот недостаток клиента фактически упоминается как одна из проблем, которые следует учитывать при определении внешних ресурсов в вашем проекте. Начиная с клиента 1.6.1 это ограничение все еще существует.

Ответ 2

Вы можете указать все файлы и папки, которые вы хотите зафиксировать в клиенте командной строки, включая внешние. Поскольку CL не рекурсирует во внешние ресурсы, вы должны указать их в своей команде commit отдельно:

svn ci working_copy externals1 externals2 -m "log message"

Не пробовал это, хотя. Если это не сработает, вы должны указать все измененные файлы и папки отдельно, а не только "корневые" папки внешних.

Ответ 3

С последним SVN вы можете сделать: --include-externals

Ответ 4

Если у вас есть только контент и никаких изменений атрибутов, вы можете что-то сделать:

svn st | egrep "^M" | awk '{print $2}' | xargs svn ci -m 'your message'

Если вы добавили/удалили... файлы, вы можете изменить регулярное выражение egrep в соответствии с вашими потребностями.

Ответ 5

Я перебираю все внешние элементы и выполняю "svn commit" для каждого, например:

for dir in $(svn propget svn:externals . | awk '{print $2}'); do svn commit $dir; done

Ответ 6

Вы можете сделать:

svn ci -m"my comment" *