#1
|
|||
|
|||
про git
Victor Sudakov написал(а) к All в Oct 20 16:05:34 по местному времени:
Dear All, Извините за оффтопик, спросить особо негде, а тут вроде есть пользователи сабжа. Как перенести набор изменений из одного репозитория в другой (не связанный по сети)? Не одним общим патчем, а с историей. Почитал про git bundle (по аналогии с hg bundle), но там какой-то слишком сложный процесс описан, надо на 2-м объявить bundle как remote, на 1-м его как-то хитро создать, синхронизировать... Нет способа попроще как в hg (в одном репозитории завернул в архив набор изменений xxxx..yyy, в другое место принёс и приложил)? Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20170303-b20170303 |
#2
|
|||
|
|||
Re: про git
Zhenja Kaliuta написал(а) к Victor Sudakov в Oct 20 17:01:18 по местному времени:
Нi, Victor! On Sat, 03 Oct 2020 15:05:34 +0700 Victor Sudakov writes: VS> Dear All, VS> Извините за оффтопик, спросить особо негде, а тут вроде есть пользователи сабжа. VS> Как перенести набор изменений из одного репозитория в другой (не VS> связанный по сети)? Не одним общим патчем, а с историей. git format-patch/git am подойдёт или ID должны быть теми же? VS> Почитал про git bundle (по аналогии с hg bundle), но там какой-то VS> слишком сложный процесс описан, надо на 2-м объявить bundle как VS> remote, на 1-м его как-то хитро создать, синхронизировать... VS> Нет способа попроще как в hg (в одном репозитории завернул в архив VS> набор изменений xxxx..yyy, в другое место принёс и приложил)? --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
#3
|
|||
|
|||
Re: про git
Zhenja Kaliuta написал(а) к Victor Sudakov в Oct 20 17:13:00 по местному времени:
Нi, Victor! On Sat, 03 Oct 2020 15:05:34 +0700 Victor Sudakov writes: [...] VS> Почитал про git bundle (по аналогии с hg bundle), но там какой-то VS> слишком сложный процесс описан, надо на 2-м объявить bundle как VS> remote, на 1-м его как-то хитро создать, синхронизировать... Вроде как без проблем совсем: /tmp/git1 % git log --oneline 016bbf6ffdf5 (НEAD -> master) 2 aff2fdcca797 1 /tmp/git1 % git bundle create /tmp/bundle НEAD Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Compressing objects: 100% (3/3), done. Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 /tmp/git1 % cd ../git2 /tmp/git2 % git log fatal: your current branch 'master' does not have any commits yet /tmp/git2 % git bundle unbundle /tmp/bundle 016bbf6ffdf56f9c04734b3500131ec4146ef790 НEAD /tmp/git2 % git merge 016bbf6ffdf56f9c04734b3500131ec4146ef790 /tmp/git2 % git log --oneline 016bbf6ffdf5 (НEAD -> master) 2 aff2fdcca797 1 VS> Нет способа попроще как в hg (в одном репозитории завернул в архив VS> набор изменений xxxx..yyy, в другое место принёс и приложил)? --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
#4
|
|||
|
|||
про git
Victor Sudakov написал(а) к Zhenja Kaliuta в Oct 20 23:05:38 по местному времени:
Dear Zhenja, 04 Oct 20 17:13, you wrote to me: VS>> Почитал про git bundle (по аналогии с hg bundle), но там какой-то VS>> слишком сложный процесс описан, надо на 2-м объявить bundle как VS>> remote, на 1-м его как-то хитро создать, синхронизировать... ZK> Вроде как без проблем совсем: ZK> /tmp/git1 % git log --oneline ZK> 016bbf6ffdf5 (НEAD -> master) 2 ZK> aff2fdcca797 1 ZK> /tmp/git1 % git bundle create /tmp/bundle НEAD ZK> Enumerating objects: 6, done. ZK> Counting objects: 100% (6/6), done. ZK> Compressing objects: 100% (3/3), done. ZK> Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 А как в bundle запихать не всю историю, а только с коммита XXX по коммит YYY? Или лучше bundle делать всегда полный, а он потом при unbundle/merge сообразит, с какого места надо импортировать изменения? ZK> /tmp/git1 % cd ../git2 ZK> /tmp/git2 % git log ZK> fatal: your current branch 'master' does not have any commits yet ZK> /tmp/git2 % git bundle unbundle /tmp/bundle ZK> 016bbf6ffdf56f9c04734b3500131ec4146ef790 НEAD ZK> /tmp/git2 % git merge 016bbf6ffdf56f9c04734b3500131ec4146ef790 О, вот это круто, благодарю. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20170303-b20170303 |
#5
|
|||
|
|||
Re: про git
Zhenja Kaliuta написал(а) к Victor Sudakov в Oct 20 20:28:40 по местному времени:
Нi, Victor! On Sun, 04 Oct 2020 22:05:38 +0700 Victor Sudakov writes: VS> Dear Zhenja, VS> 04 Oct 20 17:13, you wrote to me: VS>>> Почитал про git bundle (по аналогии с hg bundle), но там какой-то VS>>> слишком сложный процесс описан, надо на 2-м объявить bundle как VS>>> remote, на 1-м его как-то хитро создать, синхронизировать... ZK>> Вроде как без проблем совсем: ZK>> /tmp/git1 % git log --oneline ZK>> 016bbf6ffdf5 (НEAD -> master) 2 ZK>> aff2fdcca797 1 ZK>> /tmp/git1 % git bundle create /tmp/bundle НEAD ZK>> Enumerating objects: 6, done. ZK>> Counting objects: 100% (6/6), done. ZK>> Compressing objects: 100% (3/3), done. ZK>> Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 VS> А как в bundle запихать не всю историю, а только с коммита XXX по VS> коммит YYY? На сколько я понимаю, как и для git fetch при работе с удалённым репозитарием, ему нужен ref, поэтому нужно оттежить или отбранчить YYY. % git tag name-for-remote YYY Затем кратко: вместо НEAD в примере выше, XXX..name-for-remote (XXX не включается). Длинно: это параметры к git rev-list (в мане есть несколько примеров). Совсем подробно как ссылаться на разные коммиты в мане git rev-parse. VS> Или лучше bundle делать всегда полный, а он потом при VS> unbundle/merge сообразит, с какого места надо импортировать VS> изменения? вопрос скорости и места. Можно и полный .git копировать и потом просто fetch/pull из него (fetch/pull также можно сделать из бандла). ID уникальны, должен брать только те объекты, которых нет локально, поэтому можно сказать "сообразит". Если же сильно короткая история, получается так: /tmp/git2 % git bundle unbundle /tmp/bundle error: Repository lacks these prerequisite commits: error: 8330c1b650cce40e528ad024a2f3874804ee0bb3 ZK>> /tmp/git1 % cd ../git2 ZK>> /tmp/git2 % git log ZK>> fatal: your current branch 'master' does not have any commits yet ZK>> /tmp/git2 % git bundle unbundle /tmp/bundle ZK>> 016bbf6ffdf56f9c04734b3500131ec4146ef790 НEAD ZK>> /tmp/git2 % git merge 016bbf6ffdf56f9c04734b3500131ec4146ef790 VS> О, вот это круто, благодарю. в принципе там в мане пример, где достаточно просто git pull /tmp/bundle, когда ref из бандла мержится в текущий бранч. --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
#6
|
|||
|
|||
про git
Victor Sudakov написал(а) к Zhenja Kaliuta в Oct 20 20:58:20 по местному времени:
Dear Zhenja, 04 Oct 20 20:28, you wrote to me: VS>>>> Почитал про git bundle (по аналогии с hg bundle), но там VS>>>> какой-то слишком сложный процесс описан, надо на 2-м объявить VS>>>> bundle как remote, на 1-м его как-то хитро создать, VS>>>> синхронизировать... ZK>>> Вроде как без проблем совсем: ZK>>> /tmp/git1 % git log --oneline ZK>>> 016bbf6ffdf5 (НEAD -> master) 2 ZK>>> aff2fdcca797 1 ZK>>> /tmp/git1 % git bundle create /tmp/bundle НEAD ZK>>> Enumerating objects: 6, done. ZK>>> Counting objects: 100% (6/6), done. ZK>>> Compressing objects: 100% (3/3), done. ZK>>> Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 VS>> А как в bundle запихать не всю историю, а только с коммита XXX по VS>> коммит YYY? ZK> На сколько я понимаю, как и для git fetch при работе с удалённым ZK> репозитарием, ему нужен ref, поэтому нужно оттежить или отбранчить ZK> YYY. ZK> % git tag name-for-remote YYY ZK> Затем ZK> кратко: вместо НEAD в примере выше, XXX..name-for-remote (XXX не ZK> включается). Примерно понятно. Непонятно зачем недостаточно просто двух commit ID. VS>> Или лучше bundle делать всегда полный, а он потом при VS>> unbundle/merge сообразит, с какого места надо импортировать VS>> изменения? ZK> вопрос скорости и места. Можно и полный .git копировать и потом просто ZK> fetch/pull из него (fetch/pull также можно сделать из бандла). Вот кстати да, спасибо за идею, самый простой способ скопировать репозиторий полностью. Только что проверил - можно делать из принесенного репозитория pull, не прописывая его как remote и пр., а просто указав путь на fs. На том наверное и остановлюсь. [dd] VS>> О, вот это круто, благодарю. ZK> в принципе там в мане пример, где достаточно просто git pull ZK> /tmp/bundle, когда ref из бандла мержится в текущий бранч. В том примере AFAIR они сперва бандл как удалённый репозиторий прописывают, а я не хотел так. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20170303-b20170303 |
#7
|
|||
|
|||
Re: про git
Zhenja Kaliuta написал(а) к Victor Sudakov в Oct 20 19:35:15 по местному времени:
Нi, Victor! On Mon, 05 Oct 2020 19:58:20 +0700 Victor Sudakov writes: [...] VS>>> А как в bundle запихать не всю историю, а только с коммита XXX по VS>>> коммит YYY? ZK>> На сколько я понимаю, как и для git fetch при работе с удалённым ZK>> репозитарием, ему нужен ref, поэтому нужно оттежить или отбранчить ZK>> YYY. ZK>> % git tag name-for-remote YYY ZK>> Затем ZK>> кратко: вместо НEAD в примере выше, XXX..name-for-remote (XXX не ZK>> включается). VS> Примерно понятно. Непонятно зачем недостаточно просто двух commit ID. Я когда-то давно смотрел в удалённый протокол, он был завязан на ref'ы. Точных причин не знаю, ибо попросить вызвать git rev-list при некоторой переделке выглядело возможным. Но тонкостей не вспомню сейчас. [...] ZK>> в принципе там в мане пример, где достаточно просто git pull ZK>> /tmp/bundle, когда ref из бандла мержится в текущий бранч. VS> В том примере AFAIR они сперва бандл как удалённый репозиторий VS> прописывают, а я не хотел так. Это не обязательно. Просто иллюстрация бандла как полноценного удалённого, чтобы git pull по-умолчанию работал. Как с любым удалённым, его можно не прописывать, а просто сказать, откуда fetch'ить. --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |