Как приписать одну фиксацию нескольким разработчикам?


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

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

8 64

8 ответов:

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

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

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

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

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

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

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

Как исследователь указал в комментарии, GitHub объявил о поддержке этого в своем блоге 29 января 2018 года:совершить вместе с соавторами (подробности).

Для Базара:

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

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

git-pair

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

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

создать как:

# .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

для вас.

Я думаю, что Git не хватает такой функции. Однако 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?

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

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

например.

git mob <initials of co-authors>
git commit
git solo

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

$ git co-commit -m "Commit message" --co "co-author <co-author-email>"

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