Необходимо е да се преобразува ствол на проект в клон, когато се използва CVS

Преобразувам голямо CVS хранилище с множество проекти в Subversion с помощта на cvs2svn. Работи много добре, но има няколко CVS проекта, които наистина трябва да бъдат клонове на други проекти.

Използвайки файл с опции, мога да укажа, че стволът на проекта „ShouldBeBranch“ трябва да бъде поставен в „/OtherProject/branches/ShouldBeBranch“, но не мога да намеря начин да избегна създаването на Subversion директории за таговете и клоновете на проектът ShouldBeBranch (които са празни, но все още са създадени).

Единствената опция, която виждам в момента, е да изтрия директориите от Subversion, след като преобразуването завърши, но се чудех дали някой знае начин, по който това може да се направи в процеса на преобразуване? Разгледах също файла с подсказки за символи, но с 270 проекта уточняването на проект по номер на индекс изглежда твърде трудно!

Много благодаря, Дейвид


person David Oakley    schedule 25.05.2009    source източник


Отговори (2)


Предполага се, че самият ви проект "ShouldBeBranch" има разклонения и тагове. Къде искате да попаднат?

Ако искате само стволът на проекта "ShouldBeBranch" да бъде включен в преобразуването:

  • изключете всички други символи от проекта "ShouldBeBranch".
  • задайте неговия trunk_path на път в рамките на другия проект
  • задайте branches_path и tags_path на None във вашия файл с опции (това предотвратява създаването им)

Така частта от вашия файл с опции, която добавя проекта "ShouldBeBranch", ще съдържа редове като този:

run_options.add_project(
    # ...
    trunk_path='OtherProject/branches/ShouldBeBranch',
    branches_path=None,
    tags_path=None,
    # ...
    symbol_strategy_rules=[
        ExcludeRegexpStrategyRule(r'.*'),
        ],
    )
person mhagger    schedule 26.05.2009
comment
ShouldBeBranch всъщност няма собствени разклонения или етикети, така че мисля, че решението None ще свърши работа... Не бях виждал това никъде! Благодаря, Дейвид - person David Oakley; 26.05.2009
comment
Здравей, mhagger, използвам cvs2svn 2.1.1, който е пакетът, наличен в Ubuntu 9.04. С тази версия cvs2svn хвърля изключение, когато се опитва да раздели пътя: Traceback (последното последно извикване): ... Файл /var/lib/python-support/python2.6/cvs2svn_lib/common.py, ред 115, в path_split pos = path.rfind('/') AttributeError: 'NoneType' обектът няма атрибут 'rfind' Изключение AttributeError: 'NoneType' обектът няма атрибут 'error' в ‹bound метод Popen.__del__ на ‹subprocess.Popen обект при 0x86e72cc›› игнорирано Това нещо, което се е променило във 2.2.0 ли е? Благодаря! - person David Oakley; 27.05.2009
comment
Надстроен до последната версия на cvs2svn (версия 2.2.0) и предложението на mhagger вече работи перфектно: няма създадени фалшиви директории. Много благодаря! - person David Oakley; 27.05.2009

Извършването на корекциите след импортирането ми се струва най-доброто нещо. Ако svn преместите project\trunk на проект към клон\something, Subversion просто ще проследи историята.

Тази публикация в блог описва начин за преименуване на пътища с помощта на цикъл на дъмп/зареждане. По този начин ще се промени историята, така че когато погледнете назад в историята на файловете, ще изглежда, че те винаги са били в клон\нещо.

Ако трябваше да се върнете към старата версия, бихте очаквали тя да бъде в project\trunk. Затова не мисля, че е добре да се опитваме да променяме историята.

person Sander Rijken    schedule 25.05.2009