Поиск примеров рабочего процесса с помощью git -format-patch и git am
Я подумываю попросить моих учеников использовать git для парного программирования. Поскольку работа студентов должна быть секретной, публичное репо не может быть и речи. Вместо этого каждый ученик будет иметь частное репо, которое они поддерживают, и им нужно будет обмениваться патчами, используя git -формат-патч. Я прочитал man-страницу, но я немного неясен, какие патчи будут отправлены. Очевидная вещь для студентов будет отправить все исправления с момента последней отправки или (если git не хочет получать одинаковые исправления избыточно) отправить все патчи с самого начала. (Помните, что это студенческие проекты, они длились пару недель и малы, а производительность не является критерием.) Наш лучший друг простота, и мы любим грубой силы.
Может ли кто-нибудь дать мне короткую серию примеров, в которых показаны два человека, каждый из которых имеет частный репозиторий git, обмениваясь патчами, используя git -формат-патч и git -am? Или, альтернативно, укажите мне существующую документацию и/или учебник git?
Ответы
Ответ 1
Это лучше всего работает, если они могут видеть друг друга git repos. git сам управляется таким образом (там общественный репо люди могут ссылаться, а затем они форматируют-патч оттуда). Если люди никогда не видят друг друга в репозиториях, все становится немного сложнее...
Одна вещь, которую они могут сделать, это сохранить ссылку на последний раз, когда они сделали патч формата. Скажем, они начинают с того, что просто отправляют все свое дерево (в том числе .git):
tar cvf - mytree | gzip -9vc > /tmp/mytree.tgz
# mail /tmp/mytree.tgz
git tag last-send
# hack, commit, hack, commit
git format-patch -M -C last-send..
# mail 00* && rm 00*
git tag -f last-send
git tag
в этой форме создает "легкий тег". Это своего рода закладка. Это будет простой способ для людей отслеживать, что они отправили, чтобы они могли отправить его в следующий раз.
С другой стороны:
# get patches from mail and place in /tmp
git am /tmp/00*
rm /tmp/00*
Ответ 2
Кажется, что git bundle
- лучший вариант. В отличие от git format-patch
, который является односторонним рабочим процессом обмена, пакет позволяет использовать тот же рабочий процесс, который вы используете с публичными пультами, но отделен от прямого доступа.
Он предназначен для кроссовок и идеально подходит для студентов, чтобы сэкономить на USB или пулах электронной почты.
патчи больше предназначены для подачи заявки на одобрение по стилю передачи проекта.