Понимание отраслевых изменений - PullRequest
1 голос
/ 20 июля 2011

В конце этой стены текста действительно стоит вопрос. Это просто требует настройки, чтобы добраться до. Я ценю ваше отношение ко мне.

У меня есть проект, которым я занимаюсь, вместе с двумя другими разработчиками. Когда-то рано, но на самом деле не в начале текущей фазы разработки, мы заинтересовались git.

Я импортировал рабочий каталог SVN в git. Мы втроем работали над функциями, которые будут развернуты по порядку (по прозвищу «промо», затем «карта», затем «опрос»). Так что, не зная, что лучше, я разветвлял «карту» от «мастера» и «обзор» от «карты». Я бы сделал это по-другому, но несколько месяцев назад я так и сделал.

Разработчик, работавший над «первым» проектом, «промо», продолжал работать в SVN, и я вручную поддерживал синхронизацию главной ветви с его изменениями, периодически объединяя их через ветви функций. Выглядело это так:

* ------- master (in sync with svn and containing work for "promo")
 \*------- dev/map
   \*------  dev/survey

Итак, на прошлой неделе "промо" заработало, а вчерашняя "карта" вышла в свет, и все это было готово к некоторой очистке.

Методология рабочей загрузки заключалась в том, что я сделал git diff --stat master..dev/map, чтобы найти все измененные файлы, и вручную отправил их по FTP на рабочий сервер.

Как только это было проверено и принято, я пошел:

git checkout master
git merge dev/map
git branch -d dev/map

Так что теперь master представляет то, что находится как на промежуточном сервере, так и на сервере разработки. Тогда:

git checkout -b production
git checkout -b development
git checkout -b hotfix

Так что теперь у меня есть ветка для того, что находится на производстве, одна для интеграции и одна для неизбежных быстрых исправлений в работе. Я могу думать о dev / survey как о ветке «разработки».

Я выполнил команды git remote, чтобы отразить и перенести все эти изменения в мой центральный репозиторий (gitolite). Это не позволило бы мне нажать :master, потому что это могло бы сбить с толку клона - и я понял, но я, вероятно, настрою его, чтобы позволить мне идти вперед и делать это.

Итак, я попросил моего парня, работающего над «опросом», снять все эти изменения и с помощью git diff --stat найти его измененные файлы для размещения на промежуточном сервере. Когда он это сделал, он получил длинный список файлов, которые, казалось, не имели отношения к его изменениям. Он получил все эти новые ветви, но почему-то не получил все коммиты или что-то в этом роде.

Я получил от него чистый клон репозитория, и он получил все изменения, которые я намеревался, и смог перенести свою работу на промежуточный сервер для тестирования.

Вопрос в том, что случилось с его репо, когда он столкнулся со всеми этими изменениями в ветке? Я думал, что ветвь - это просто особый случай тега - тега, который перемещается вместе с HEAD. Он должен был просто получить все нужные товары, не так ли?

1 Ответ

0 голосов
/ 20 июля 2011

Каким-то образом мастер в репозитории gitolite имеет другую историю, чем мастер в репозитории git разработчика.
Так что это не так много "что происходит на его репо?" поскольку речь идет о «что происходит (во время пуша) на репо (центральном) репо?».

...