мерзкий выбор из пульта второй степени - PullRequest
0 голосов
/ 08 декабря 2010

У меня очень медленная сетевая связь с моим удаленным репозиторием (назовите его repoSlow), из которого я время от времени извлекаю свое основное репо разработки (назовите его repo1).

Иногда я клонирую repo1 в repo2 в другом каталоге для проведения тестов, например. в других ветках без потери состояния repo1 (в том числе в отношении объектных файлов и библиотек, поэтому простой тайник этого не сделает).

Для того чтобы получить состояние repoSlow в repo2, мне обычно приходится копить в repo1, извлекать и объединять все ветви (которые меня интересуют) из repoSlow в repo1, а затем загружать их в repo2.

Помимо того, что это громоздкая процедура и некоторые другие моменты, я иногда не хочу сливаться в repo1. Извлечение другого локального имени филиала приведет к большому беспорядку имен.

Существует ли простой и прямой способ получить пульт дистанционного управления?

Полагаю, что лучшим рабочим процессом может быть клонирование repoSlow в голое (или даже зеркальное?) Локальное репо и клонирование этого по несколько раз, но для лучшего понимания git я сохраняю исходный вопрос.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

Вы можете сделать такую ​​конфигурацию в repo2:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        fetch = +refs/remotes/origin/*:refs/remotes/ancestor/*

Это говорит repo2 не только выбирать ветви repo1 (и отражать их как origin/*), но также извлекать отслеживающие ветви repo1 его источника (и отражать их как ancestor/*)

Так что теперь вам нужно всего лишь выполнить «git fetch» ​​в repo1, чтобы получить изменения из repoSlow, без каких-либо изменений в локальных ветвях, и тогда вы сможете также извлечь эти изменения в repo2.

0 голосов
/ 08 декабря 2010

Вы правы, вероятно, было бы лучше локально клонировать голое репо в качестве точки интеграции, а затем клонировать свои репо1 и репо2 из этого.

Но чтобы ответить на ваш первоначальный вопрос, я не верю, что есть способ напрямую достать пульт дистанционного управления; но вы можете просто добавить repoSlow в качестве удаленного в repo2 после клонирования из repo1. Если вы сделаете это, ему нужно будет только извлечь из repoSlow те вещи, которые он не клонировал, из repo1, что должно быть значительно быстрее, чем загрузка всей истории.

Чтобы сделать это, просто запустите следующее из repo2:

git remote add upstream git://example.com/path/to/repo/slow.git
git remote update

Теперь у вас должно быть два пульта в repo2; origin относится к repo1, а upstream (или как вы хотите это называть), указывая на ваш repoSlow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...