LINUX.ORG.RU

svn: subtree -> tree


0

0

$ mkdir foo
$ cd foo
$ svn co svn+ssh://svn.host/foo/bar bar
...
$ svn co svn+ssh://svn.host/foo/baz baz
...
$ svn status
svn: warning: '.' is not a working copy

Как сделать foo рабочей копией без повторного чекаута bar и baz?
Вариант дотащить из foo всё кроме bar и baz допустим.

Непосредственная задача: нужно внести изменения в bar и baz одним коммитом.


anonymous

Сделать checkout svn+ssh://svn.host/foo, и, если изменения выразимы патчем, наложить на foo/bar и foo/baz патчи, сделанные в bar и baz (это не превратит существующие bar и baz в рабочую копию, но позволит сделать единый коммит). Если измения невыразимы патчем, удалить из foo подкаталоги bar и baz, и скопировать на их место уже имеющиеся (но надо проверить, что foo, bar и baz относятся к одной ревизии).

tailgunner ★★★★★
()

Кстати чем svn+ssh лучше https?

INFOMAN ★★★★★
()
Ответ на: комментарий от tailgunner

> Сделать checkout svn+ssh://svn.host/foo

*БЕЗ* чекаута foo/bar и foo/baz!

Сделать co foo и внести нужные изменения я ессно могу, равно как и отдельные коммиты для bar и baz. Хотелось услышать, нет ли более красивого решения.

Весь репрозитарий большой, по возможности вытягиваются только нужные куски. Теперь появилась необходимость сделать синхронное изменение в двух уже вытянутых кусках.

anonymous
()
Ответ на: комментарий от anonymous

>> Сделать checkout svn+ssh://svn.host/foo

>*БЕЗ* чекаута foo/bar и foo/baz!

Это будет намного больше, чем "дотащить из foo всё кроме bar и baz"?

> Хотелось услышать, нет ли более красивого решения.

Какой версии svn?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Это будет намного больше, чем "дотащить из foo всё кроме bar и baz"?

Х.з., зависит, но вопрос не об этом.

Есть неприятный выбор: тащить сразу весь репрозитарий (который мне нафик не нужен), или тащить отдельные модули и иметь возможность работать с ними только по одному.

Хочется тянуть только те модули которые нужны, но иметь возможность делать с ними всё что можно делать с ними в полной рабочей копии.

> Какой версии svn

version 1.4.2 (r22196)

anonymous
()
Ответ на: комментарий от anonymous

>> Какой версии svn

> version 1.4.2 (r22196)

В какой-то из новых SVN добавили опцию "мелкого checkout". Посмотри в svn help co.

Еще можно попробовать так: запустить svn co svn+ssh://svn.host/foo и через пару секунд прибей его - это даст тебе каталог foo, куда можно скопировать твои bar и baz, и попробовать закоммитить :) только всё, кроме bar и baz нужно прибить.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Ну, если процедура переноса изменений опущена для краткости, то и так тоже можно. Кстати, в полученный пустой foo можно просто скопировать каталоги bar и baz, IIRC.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Достало уже сбрасывание формата переноса строк при неверном вводе кода.

Наверно ошибся.
А так?

svn co -N foo
svn update foo/bar
svn update foo/baz
svn commit foo

anonymous
()
Ответ на: комментарий от anonymous

Думаю, так тоже покатит. IIRC, в SVN update и checkout - это почти одно и то же. Просто я сам давно не пользуюсь, не на чем проверить.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Да, внесение изменений перед коммитом опущено для краткости.

anonymous
()
Ответ на: комментарий от anonymous

> А так?
Не работает, к сожалению:

$ cd foo
$ svn co -N svn+ssh://..../foo .
U .
Checked out revision 10321.
$ svn update foo
At revision 10321.
$ svn status
? foo
? bar

anonymous
()
Ответ на: комментарий от anonymous

$ cd foo
$ svn co -N svn+ssh://..../foo .
U .
Checked out revision 10321.
$ svn update foo
At revision 10321.
# а здесь можно еще попробовать так
$ svn update baz

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Повторяю:

svn co -N svn+ssh://..../foo
svn update foo/bar
svn update foo/baz
svn status foo

или

svn co -N svn+ssh://..../foo
cd foo
svn update bar
svn update baz
svn status

anonymous
()
Ответ на: комментарий от tailgunner

> # а здесь можно еще попробовать так

Да, моя ошибка — в исходном сообщении s/update foo/update bar/. Сообщении, не коммандах. Результат именно такой как было написано :(

anonymous
()
Ответ на: комментарий от anonymous

Если не получится так:

$ svn co -N svn+ssh://..../foo .
$ cd foo
$ svn update baz

то всё, задача неразрешима AFAIK.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.