Как приписать один коммит нескольким разработчикам? - PullRequest
81 голосов
/ 16 сентября 2011

Способ работы всех систем контроля версий, с которыми я знаком, заключается в том, что каждый коммит присваивается одному разработчику.Рост Agile Engineering, в частности парного программирования, привел к тому, что два разработчика внесли значительный вклад в одну и ту же задачу, например, исправление ошибки.

Вопрос о присвоении не будет слишкомбольшая часть работы в рабочей среде, так как менеджер проекта будет знать о работе, которую выполняют пары, но что если два участника с открытым исходным кодом решат объединиться и вытолкнуть какой-то код в конкретный проект, который понятия не имеет, чтоРаботаем вместе.Есть ли способ для системы контроля версий, такой как Git, приписать определенный патч нескольким разработчикам?

Ответы [ 8 ]

62 голосов
/ 25 января 2017

Соглашение git заключается в использовании в соавторстве в конце сообщения фиксации ( ядро ​​git: Соглашения о сообщениях фиксации , ссылающиеся на Сообщения фиксации Openstack ). Это также одно из решений для ошибки git-core , связанного в ответ Джерри

Co-authored-by: Some One <some.one@example.foo>

В этом комментарии от 5 мая 2010 года Джош Триплетт также предлагает реализовать соответствующую поддержку в git.

Как отметил Llopis в комментарии, GitHub объявил о поддержке этого в своем блоге 29 января 2018 года: Зафиксируйте вместе с соавторами ( подробнее * 1023) *).

27 голосов
/ 16 сентября 2011
Commit title

Commit body

Co-Authored-By: name <additional-dev-1@example.com>
Co-Authored-By: name <additional-dev-2@example.com>

Одна из проблем этого подхода заключается в том, что вы не можете создать подписанный ключ для этой группы разработчиков, поэтому вы можете добавить кого-нибудь в этот список, даже если они не работают с какой-либо функцией, и github будет с ней работатькак будто они сделали.Однако это не должно быть проблемой в большинстве случаев.

например, Co-Authored-By: Linus Torvalds <torvalds@linux-foundation.org>

С обычными авторами или группами подписи (старый метод) вы увидите, что он не подписан, и знаете, что можетене доверяй коммитуОднако у соавторов нет процесса подписания.


В основном устаревший ответ:

Одним из решений было бы установить имя для пары:

git config user.name "Chris Wilson and John Smith"

Вот отчет об ошибке с другими временными решениями:

Ошибка git-core: Git должен поддерживать нескольких авторов для фиксации

24 голосов
/ 16 сентября 2011

Для базара:

bzr commit --author Joe --author Alice --author Bob

Эти имена будут отображаться в журнале отдельно от имени коммиттера.

18 голосов

ГИТ-пара

https://github.com/pivotal/git_scripts#git-pair

Этот простой скрипт из Pivotal для автоматизации атрибуции пар Git.

Вы создаете файл .pairs, например:

# .pairs - configuration for 'git pair'
pairs:
  # <initials>: <Firstname> <Lastname>[; <email-id>]
  eh: Edward Hieatt
  js: Josh Susser; jsusser
  sf: Serguei Filimonov; serguei
email:
  prefix: pair
  domain: pivotallabs.com
  # no_solo_prefix: true
#global: true

, а затем:

git pair sp js

устанавливает:

user.name=Josh Susser & Sam Pierson
user.email=pair+jsusser+sam@pivotallabs.com

для вас.

12 голосов
/ 11 мая 2016

git различает коммит author и committer [1]. Вы можете использовать его в качестве обходного пути, например, подпишите себя как committer и своего соавтора как author:

GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a@a' git commit --author 'b <b@b>'

Таким образом, и вы, и ваш соавтор будут записаны в историю git. Запуск git log --format=fuller, даст вам что-то вроде:

commit 22ef837878854ca2ecda72428834fcbcad6043a2
Author:     b <b@b>
AuthorDate: Tue Apr 12 06:53:41 2016 +0100
Commit:     a <a@a>
CommitDate: Tue Apr 12 09:18:53 2016 +0000

    Test commit.

[1] Разница между автором и коммиттером в Git?

2 голосов
/ 11 июня 2018

В качестве альтернативы, есть проект с открытым исходным кодом на GitHub, который предоставляет хороший способ сделать это из командной строки.Этот проект помогает вам установить псевдоним для создания соавторов:интерфейс.

2 голосов
/ 09 апреля 2018

Попробуйте git-mob , мы создали его для приписывания соавторов к коммитам.

* 1005 Е.Г. *

git mob <initials of co-authors>
git commit
git solo
2 голосов
/ 16 сентября 2011

Мы добавляем наши имена к каждому сообщению фиксации в конце как соглашение, например: Implemented cool feature <Aneesh | Hiren>

...