Как можно объединить рабочие вложенные копии Subversion? [Эквивалентно: как добавить родительский каталог в систему контроля версий?] - PullRequest
1 голос
/ 05 февраля 2011

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

> svn co --depth=empty svn://repos/trunk .
> svn co --depth=infinity svn://repos/trunk/project project
> svn co --depth=infinity svn://repos/trunk/test test

Конечно, команды должны были выглядеть примерно так:

> svn co --depth=empty svn://repos/trunk .
> svn up --set-depth=infinity project
> svn up --set-depth=infinity test

В результате появились следующие симптомы:

> svn st
?       project
?       test

хотя

> svn info
Path: .
URL: svn://repos/trunk
Repository Root: svn://repos
Repository UUID: 01234567-89ab-cdef-0123-456789abcdef
Revision: 1234
Node Kind: directory
Schedule: normal
Depth: empty

> svn info project
Path: project
URL: svn://repos/trunk/project
Repository Root: svn://repos
Repository UUID: 01234567-89ab-cdef-0123-456789abcdef
Revision: 1234
Node Kind: directory
Schedule: normal

(Любопытно, что симптомы не возникают, если первая команда была svn co --depth=immediates svn://repos/trunk ..)

Теперь причина в том, что файл

./.svn/entries

не содержит записей для каталогов project и test.(Я могу исправить свою проблему, взломав этот файл напрямую, но я бы предпочел этого не делать.)

Мой вопрос:

Существует ли команда Subversion для 'coalesce'эти рабочие копии, так что svn st молчит (или показывает локальные изменения в проекте и тесте)?

Я пробовал разные вещи, в том числе

svn up -set-глубина = сразу же --depth = пусто.

, но это не работает, потому что --depth и --set-depth "взаимоисключающие".

Я также пытался

svn up --set-глубина = проект бесконечности

, но это не работает, потому что project интерпретируется как относительный путь локально, а не в хранилище;то есть URL-адрес формируется после применения относительного пути к текущему каталогу, а не до него.

Хуже того, я попытался

svn up --set-deep =немедленно.

но это приводит к нежелательному (но правильному) эффекту веселого удаления файлов.

Этот вопрос более актуален, чем описанные мной обстоятельства.Другая ситуация, которая может потребовать такого рода «исправления», заключается в том, что вы хотите проверить родительский элемент самого верхнего узла, который уже был извлечен, без необходимости повторной проверки источников, которые уже существуют локально, и при этом без каких-либо локальных изменений.

Спасибо, Роб.

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

Нет, объединение таких рабочих копий невозможно поддерживаемым способом. Я бы просто сделал новую проверку, чтобы исправить ситуацию.

0 голосов
/ 20 мая 2011

Вы можете скопировать неправильно извлеченные подпути в другое место, а затем правильно набрать

svn up --set-depth=infinity project
svn up --set-depth=infinity project

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

Может подойти cat (linux) или type (Windows).

Linux:

cat savedLocation/recursiveDir/file > recursiveDir/file

Windows

type savedLocation/recursiveDir/file > recursiveDir/file

Вы можете перечислить файлы с рекурсивным каталогом с помощью команды tree в linux:

tree -if savedLocation/

Не знаю, как сделать то же самое в Windows

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