2014-10-13 4 views
0

Сначала я сделать ответвления от основного проектаSVN слияния на переименованных файлов

$ svn cp project branched 

Затем я переименовывать несколько файлов в отрасли:

$ svn mv branched/file.c branched/file.cpp 

После фиксации/обновления, кто-то вносит изменения в исходный файл в исходном проекте, как я могу объединить эти изменения?

$ svn merge project/file.c branched/file.cpp 
svn: E195002: Invalid merge source 'project/file.c'; a working copy path can only be used with a repository revision (a number, a date, or head) 

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

ответ

1

«Invalid источник объединения„Проект/file.c“, рабочий путь копирования может быть использован только с репозитария ревизии»

Давайте разберем, что вниз.

"Invalid источник объединения" Проект/file.c"

SVN имеет проблему понимания того, что вы имеете в виду под "проектом/file.c". Примечание. SVN пытается использовать тот же файл, который вы ему сказали, и этот файл, по-видимому, существует в вашей системе. Здесь нет проблем с переименованием.

«путь к рабочей копии»

Вы хотите сказать, SVN слить из файла, который уже существует на вашем компьютере в вашей рабочей копии. Это НЕ нормальное использование. Обычно вы указываете URL-адрес репозитория для слияния. Это использование поддерживается, но:

«могут быть использованы только с репозитария ревизии»

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

$ svn merge -r HEAD project/file.c branched/file.cpp 

ОДНАКО, другая странная вещь, которую вы здесь делаете, заключается в объединении одного файла. Обычно вы хотите объединить целые деревья каталогов, а не отдельные файлы. Таким образом, я бы рекомендовал вариацию на следующие вместо:

$ svn merge http://example.com/svn/path/to/project branched 

Читайте на слияниях здесь:

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.merge.html

+0

1. Слияние поддеревьев ** не странно ** здесь, в этой конкретной case, без такого слияния, слияние целых деревьев позже приведет к «конфликту деревьев» 2. «-r HEAD» в слиянии является чрезмерным (HEAD является значением по умолчанию для слияний) –

+0

Это в основном имеет смысл, но я попробовал ваш последний пример: ' $ svn merge https: //.../project/ branch/file_util.cpp' svn: E195016: 'https: //.../[email protected]' должен быть связан с 'ht ТПС: // .../branch/[email protected] ' – dargaud

+0

Ой, опечатка. Фиксация сейчас. – Ben

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