forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 03.10.2020, 13:23
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию про 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  
Старый 04.10.2020, 18:23
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 04.10.2020, 18:33
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 04.10.2020, 20:52
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию про 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  
Старый 04.10.2020, 21:45
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 05.10.2020, 18:22
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию про 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  
Старый 05.10.2020, 20:53
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию 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)
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:58. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot