Я подумываю попросить своих учеников использовать git для парного программирования. Поскольку студенческая работа должна быть секретной, о публичном репо не может быть и речи. Вместо этого у каждого студента будет частное репо, которое они поддерживают сами, и им нужно будет обмениваться патчами с помощью git-format-patch. Я прочитал справочную страницу, но мне немного непонятно, будут ли отправлены исправления который. Для студентов очевидным будет отправить все патчи с момента последней отправки или (если git не возражает против получения тех же патчей повторно) отправить все патчи с незапамятных времен. (Помните, что это студенческие проекты, они длятся пару недель и небольшие, и производительность не критерий.) Наш лучший друг - простота, и мы тоже любим грубую силу.
Может ли кто-нибудь дать мне короткую серию примеров, показывающих, что два человека, каждый с частным репозиторием git, обмениваются патчами с помощью git-format-patch и git-am? Или, в качестве альтернативы, указать мне существующую документацию git и / или руководство?
Лучше всего, если они могут видеть репозитории git друг друга. Сам 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*
к сожалению, они никогда не видят репо друг друга, хотя они могут быть оба перед компьютером, работающим над одним из двух репозиториев. Но это похоже на то, на что я надеялся, так что это меня возбуждает.
Спасибо за этот ответ. Это помогло мне преобразовать беспорядочный репозиторий SVN в Git. Мой опыт на blog.orfjackal.net/2009/05/…
А как насчет git bundle
? Кажется, это лучший метод для этого рабочего процесса совместного использования кода. В отличие от формата-патча, это скорее односторонний коммуникационный процесс.
Кажется, что git bundle
- лучший вариант. В отличие от git format-patch
, который представляет собой односторонний рабочий процесс связи, пакет позволяет вам использовать тот же рабочий процесс, который вы используете с общедоступными пультами, но отделен от прямого доступа.
Он разработан для кроссовок и идеально подходит для студентов, которые могут сохранять на USB-накопитель или отправлять пакеты по электронной почте.
патчи больше предназначены для отправки на утверждение руководителю проекта по стилю общения.
git-bundle stackoverflow.com/questions/2175961/…