SVN - как применить изменения, сделанные в транке, ко всем веткам - PullRequest
7 голосов
/ 29 октября 2009

Я новичок в SVN. У меня есть структура каталогов SVN:

|-trunk
  |-file1.php
  |-file2.php
|-branches
  |-branch_1
    |-file1.php
    |-file2.php
  |-branch_2
    |-file1.php
    |-file2.php

В багажнике у меня есть основная версия моего приложения. У меня есть две ветки для разных клиентов, которые имеют изменения только в некоторых файлах. Когда я нахожу какую-то ошибку ядра, я исправляю ее в багажнике. Например, я изменил каталог file1.php в trunk. Я хочу применить изменения к файлам с именем file1.php во всех ветвях.

Я немного растерялся. В Контроль версий с Subversion я нашел следующее объяснение.

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

Поэтому я решил, что когда я фиксирую изменение в файле trunk\file1.php, оно будет автоматически применено к другим file1.php файлам, поскольку я не вносил изменений в эти файлы в каталоге branches.

Как я могу применить изменения из каталога соединительных линий ко всем ветвям? Я пытался использовать svn merge следующим образом:

svn merge -r 31:32 http://mysvnserver.com/project/branches/branch_1

но я не внес никаких изменений (svn diff -r 31:32 возвращает все сделанные мной изменения).

Ответы [ 3 ]

10 голосов
/ 29 октября 2009

Если вы хотите применить изменение из trunk в branch_1, команда слияния должна указать, где получить diff от , а затем указать цель, к которой будет применено слияние:

cd branch_1
svn merge -r 31:32 http://mysvnserver.com/project/trunk .
svn diff   # confirm that the only diff is your change to file1.php
svn commit
2 голосов
/ 29 октября 2009
cd workingcopy
svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_1
svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_2
svn commit -m "Merged r32 into branches"
0 голосов
/ 29 октября 2009

Попробуйте:

svn merge -r 31:32 http://mysvnserver.com/project/trunk branch_1

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

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