Subversion: можно ли зафиксировать несколько извлеченных папок одновременно? - PullRequest
3 голосов
/ 03 декабря 2009

Допустим, у меня есть рабочие копии нескольких разных папок из моего SVN-репозитория, разбросанные по моей файловой системе. Их родительские каталоги не являются частью репозитория. Э.Г.

somedir1\
   workingcopyOfA\
   workingcopyOfB\
somedir2\
   somedir3\
       workingcopyOfC\
   workingcopyOfD\

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

Возможно ли это? Для этого предназначены списки изменений? Что я могу сделать, если я использую svn

(Здесь есть несколько похожих вопросов о SO, но они относятся к разным проблемам.)

РЕДАКТИРОВАТЬ: Чтобы уточнить: все рабочие копии принадлежат одному и тому же хранилищу, но разным частям, то есть хранилище выглядит так:

RepoDirA\
RepoDirB\
RepoDirC\
RepoDirD\

Ответы [ 5 ]

3 голосов
/ 03 декабря 2009

Как уже отмечалось, это невозможно, поскольку есть веские причины (см., В частности, ответ Д. Гарсии).

Если eclipse поддерживает что-то подобное, я подозреваю, что оно создает несколько проверок за вашей спиной.

Что возможно, однако, это отразить изменения в одном рабочем каталоге и применить эти изменения к другому рабочему каталогу (если они перекрываются). После того, как вы это сделаете, все ваши изменения будут в едином рабочем каталоге, откуда вы сможете зарегистрироваться. Проблемы слияния, на которые указал D Гарсия, теперь являются вашей обязанностью решить во время исправления.

Если ваши рабочие каталоги не перекрываются, и единственная причина, по которой у вас есть несколько рабочих каталогов, заключается в том, например, что Вы не хотели извлекать весь репозиторий, я предлагаю проверить иерархию в общем корне ваших рабочих каталогов, но не рекурсивно (используя svn co -N root), а затем получить конкретные рабочие каталоги с svn update path/to/subsetOfInterest для промежуточных каталогов ). Таким образом, они все живут в одном рабочем каталоге и позволяют работать с ними атомарно.

1 голос
/ 03 декабря 2009

Не похоже, что вы можете. Я попробовал это здесь, где я часто проверял несколько рабочих копий. Subversion расстроена тем, что в общем корне папок, которые вы пытаетесь зарегистрировать, нет каталога .svn.

Конечно, если все ваши рабочие копии ссылаются на один и тот же путь к хранилищу - это было бы очень неприятно. В основном вы ожидаете, что Subversion объединит 4 набора изменений локально, прежде чем помещать их в хранилище, что может сделать процесс разрешения конфликтов увлекательным:)

Обратите внимание, что это было с Subversion 1.4.5.

В 1.5 кажется, что списки изменений больше касаются наличия нескольких рабочих наборов изменений в одном рабочем каталоге и возможности обрабатывать их отдельно, а не иметь несколько рабочих каталогов и обрабатывать их как один объект.

1 голос
/ 03 декабря 2009

Я знаю, что Eclipse может сделать это, но, возможно, они используют некоторые хитрости внутри (потому что вы можете фиксировать проекты, которые тоже используют разные репозитории, например, один в CVS, а другой в SVN).

Я предлагаю просто попробовать это с вашим клиентом. Если это не сработает, будет напечатано сообщение об ошибке. Вы не можете ничего сломать.

0 голосов
/ 03 декабря 2009

Я думаю, что наборы списков изменений хранятся в хранилище по хранилищу - поэтому в вашем примере рабочие копии A и B должны были бы находиться в одном и том же хранилище. Затем вам нужно будет добавить каждую рабочую копию по отдельности в один и тот же список изменений.

Я не могу проверить его (до завершения), но настройка, кажется, работает.

0 голосов
/ 03 декабря 2009

Я думаю, что это невозможно, не из командной строки и не с помощью TortoiseSVN. Но могут быть инструменты, которые делают это возможным. Вы также можете написать bach-скрипт для этого.

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

...