Как обновить ветвь SVN, выполненную с помощью svn-copy?
noob вопрос, который я знаю, но все ресурсы, которые я нашел, терпят неудачу или дали мне новую проблему.
У меня несколько веток в моем SVN-репо. Все разработчики получают доступ к своей личной ветке. Каждая ветка была сделана копией из бета-ветки.
svn copy svn://192.168.0.2/svn/example/branches/beta
svn://192.168.0.2/svn/example/branches/dev/devN
Теперь, когда dev1 закончил работу, он объединил свою работу в бета-версии (pwd =./beta/)
svn merge svn://192.168.0.2/svn/example/branches/dev/[email protected] .
Ну, на мой вопрос, как другой разработчик мог обновить свою ветвь до последней бета-версии с изменением dev1?
когда dev2 делает слияние (после совершения его собственного изменения | pwd =./dev/dev2)
svn merge svn://192.168.0.2/svn/example/branches/[email protected] .
Он получил это сообщение:
svn: E195016: Merge tracking not allowed with missing subtrees; try restoring these items first:
pointing his files. -> impossible to merge.
Есть ли способ "обновить" копию ветки?
Ответы
Ответ 1
Это сообщение об ошибке возникает, когда кто-то удаляет что-либо, не сообщая об этом Subversion. Если вы должны были запустить svn status
на этой рабочей копии, то тот же путь, на который подает Subversion, должен показать с помощью !
в первом столбце вывода. Обычно это означает, что кто-то использовал команду ОС для удаления путей, а не команды svn.
Если вы действительно хотите, чтобы пути были удалены, вы можете исправить это, сообщив Subversion об этом, выполнив команду svn rm
. Пути будут отображаться как удаленные с помощью D
в первом столбце вывода состояния, и ваше слияние должно продолжаться (хотя у вас могут быть конфликты дерева).
Если вы хотите, чтобы подробности gory смотрели на проблему № 2915 из проекта Subversion, которая объясняет, почему это сообщение об ошибке было добавлено.
Ответ 2
Я получаю эту ошибку, и я просто сделал чек с TortoiseSVN. Ничего не было удалено. Я нашел, что в конце длинного пути был создан "общий" каталог, который не появляется, когда я перехожу к репо-браузеру. Если я удалю родительский каталог и сделаю обновление, снова появится "общий" каталог. Родительский каталог также показывает красный X, который указывает, что TortoiseSVN считает, что что-то было удалено с помощью команды ОС, а не с помощью команды удаления SVN.
Я думаю, что в коде есть ошибка. Я не знаю, связано ли это с длиной пути (проблема для Windows 7?) Или если есть какие-то другие проблемы.
Ответ 3
Если вы работаете в Windows, а путь превышает 256 символов, Windows начнет скверно о вещах. Обычно я оборачиваюсь этим, создавая рабочее пространство непосредственно под коротким каталогом в корневой файловой системе (например, C:\WRK). Это будет использовать путь намного короче, чем C:\Users\имя_пользователя\Рабочий стол\каталог. Когда я создаю свое рабочее пространство, я добавлю ярлык на свой рабочий стол для легкого доступа.