Информация об изменениях

Сообщение Re: git bundle - не получается осилить от 07.07.2021 14:39

Изменено 07.07.2021 14:48 ·

Re: git bundle - не получается осилить
Здравствуйте, IID, Вы писали:

IID> Дано:

IID> bare GIT репозиторий. Пусть, для простоты, без веток.
IID> Есть refs на ключевые коммиты. Для определённости r1, r2, r3, r4, r5
По-моему у тебя основная проблема, что ты оперируешь тегами, а не ветками и заблудился в трёх соснахревизиях.

IID> Необходимо:

IID> 1) создать bundle для r1, r2, r3.
IID> Который после clone --mirror окажется таким же bare репозиторием, как в исходных условиях, но будет содержать refs r1, r2, r3 => все коммиты только до (включая) r3.
У тебя команда git clone --mirror r1-r2-r3.bundle $name создаёт репу в которой есть только теги r1,r2,r3, но master ветки там у тебя нет, т.к. ты не включил её при создании бандла.
Иными словами в твоём бандле нет ветки master и поэтому после восстановления её тупо неоткуда взять...

У тебя варианты:
— создавать начальный бандл в момент когда r4 и r5 ещё нет и включать master в него.
— после создания restored-repo вручную там создай ветку явно "git branch master release-3"
— ничего не делать , ну будет у тебя репо без веток, только теги... но не знаю для чего это тебе нужно

IID> 2) создать bundle для r4.

IID> Который можно будет заимпортить в созданный на предыдущем шаге bare репозиторий. И коммиты окажутся уже вплоть до (включая) r4.

Это вроде в доке для bundle описано. Если ты просто сделаешь "git bundle create ../r4-f.bundle release-4" то включатся вся история до r4. Либо ты делаешь закладку и делаешь incremental bundle как в доке git tag -f lastR2bundle ....
#инкрементальный bundle между r3 и r4
repo.git$ git bundle create ../r4.bundle release-3..release-4

# вытягиваем тег из бандла и маппим его в одноимённый локальный тег
restored-repo.git$ git fetch ../r4.bundle release-4:release-4


нужны ли тебе ветки — неясно. Поэтому ты лучше опиши вначале _задачу_, которую ты пытаешься решить, а мы попробуем подумать как её решить...
Re: git bundle - не получается осилить
Здравствуйте, IID, Вы писали:

IID> Дано:

IID> bare GIT репозиторий. Пусть, для простоты, без веток.
IID> Есть refs на ключевые коммиты. Для определённости r1, r2, r3, r4, r5
По-моему у тебя основная проблема, что ты оперируешь тегами, а не ветками и заблудился в трёх соснахревизиях.

IID> Необходимо:

IID> 1) создать bundle для r1, r2, r3.
IID> Который после clone --mirror окажется таким же bare репозиторием, как в исходных условиях, но будет содержать refs r1, r2, r3 => все коммиты только до (включая) r3.
У тебя команда git clone --mirror r1-r2-r3.bundle $name создаёт репу в которой есть только теги r1,r2,r3, но master ветки там у тебя нет, т.к. ты не включил её при создании бандла.
Иными словами в твоём бандле нет ветки master и поэтому после восстановления её тупо неоткуда взять...

У тебя варианты:
— создавать начальный бандл в момент когда r4 и r5 ещё нет и включать master в него.
— после создания restored-repo вручную там создай ветку явно "git branch master release-3"
— ничего не делать , ну будет у тебя репо без веток, только теги... но не знаю для чего это тебе нужно

IID> 2) создать bundle для r4.

IID> Который можно будет заимпортить в созданный на предыдущем шаге bare репозиторий. И коммиты окажутся уже вплоть до (включая) r4.

Это вроде в доке для bundle описано. Если ты просто сделаешь "git bundle create ../r4-f.bundle release-4" то включатся вся история до r4. Либо ты делаешь закладку и делаешь incremental bundle как в доке git tag -f lastR2bundle ....
#инкрементальный bundle между r3 и r4
repo.git$ git bundle create ../r4.bundle release-3..release-4

# вытягиваем тег из бандла
restored-repo.git$ git fetch ../r4.bundle release-4


нужны ли тебе ветки — неясно. Поэтому ты лучше опиши вначале _задачу_, которую ты пытаешься решить, а мы попробуем подумать как её решить...