TortoiseSVN: копировать содержимое одной ветви поверх другой - PullRequest
3 голосов
/ 17 декабря 2010

Я использую TortoiseSVN без внешнего сервера Subversion для управления источником LabView (т. Е. Большой коллекцией постоянно меняющихся двоичных файлов).

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

Каков наилучший / самый простой способ скопировать содержимое конкретной ревизии ветки ствола в бета-ветку? По сути, я хочу удалить старое содержимое beta и вставить новое. Полагаю, что Delete + add сработает, но это явно неоптимально. Слияние невозможно, если только я не могу заставить Tortoise автоматически разрешать все конфликты в пользу ствола, включая удаление файлов.

Обновление: пара человек спросила, почему я не хочу удалять + добавлять. Я бы хотел более чистую альтернативу.

  1. Этот метод приводит к тому, что половина обновлений бета-дерева "стирает последнюю версию".
  2. Обновления не являются атомарными, поэтому кто-то может подобрать пустой выпуск.
  3. Я не пробовал и не видел, но beta не будет подходящей веткой. Будет ли журнал ревизий вообще отслеживать несколько ревизий, поскольку каждый раз это «новый» файл?

Обновление 2: svn разрешает любые произвольные команды перед фиксацией, но я не мог заставить Tortoise работать таким образом. После выбора «Удалить» каталоги-заглушки все еще оставались до тех пор, пока я не подтвердил, после чего я смог снова заполнить ветку. Должен быть способ отменить пометку каталога для удаления, если он существует как в старых, так и в новых ревизиях тегов.

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

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

Я не знаю о TortoiseSVN, но если вы установите клиент командной строки , вы можете сделать следующее, чтобы объединить последние trunk изменения в ветку beta:

cd c:/path/to/my/working/copy/of/beta/branch
svn merge file:///c:/path/to/my/repository/trunk --accept theirs-full
svn commit -m "merged latest trunk changes to beta branch"

Опция --accept theirs-full разрешает все конфликты, используя версию магистрали, как вы хотите.

Это имеет некоторые преимущества: Subversion будет выполнять совместное использование представлений , поэтому файлы, хранящиеся в обеих ветвях, не будут занимать дополнительное место в хранилище. Кроме того, когда пользователи обновляют свою рабочую копию beta, по проводам необходимо тянуть только измененные файлы.

1 голос
/ 18 декабря 2010

SVN является транзакционным - удаление и копирование (не добавление!) Не будет проблематичным. И бета будет правильной веткой (или лучше тегом)

0 голосов
/ 17 декабря 2010

Почему бы не удалить бета / *, а затем скопировать транк / * в бета /?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...