Как обновить ветвь 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\имя_пользователя\Рабочий стол\каталог. Когда я создаю свое рабочее пространство, я добавлю ярлык на свой рабочий стол для легкого доступа.