Як віднести одну комісію до кількох розробників?


120

Те, як усі системи управління версіями, з якими я знайомий з роботою, полягає в тому, що кожен комітет присвоюється одному розробнику. Зростання Agile Engineering, а саме програмування пар, призвело до ситуації, коли два розробники внесли вагомий внесок у одну задачу, наприклад, виправлення помилок.

Питання атрибуції не буде занадто великим питанням у робочому середовищі, оскільки менеджер проекту буде знати про роботу, яку виконують пари, але що робити, якщо два учасники з відкритим кодом вирішать створити пару та виштовхнути якийсь код конкретного проекту, який не має уявлення, вони працюють разом. Чи існує спосіб, щоб система контролю версій, як Git, приписала певний патч декільком розробникам?


10
Це слід розділити для кожної системи управління версіями.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Відповіді:


63
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 повинен підтримувати декількох авторів для здійснення комітів


1
Що робити, якщо ви не знаєте електронної адреси людини? Будь-який спосіб пов’язати ім’я користувача GitHub тощо?
Аарон Франке

Якщо вони взяли попереднє зобов'язання, ви можете просто перевірити це:git show <COMMIT_ID> --format=email
Джеррі

2
Здається, це вже працює в GitLab (див. Gitlab.com/gitlab-org/gitlab-foss/merge_requests/17919 )
Meiogordo

67

Конвенція git полягає у використанні Co-Authored-By в кінці повідомлення про фіксацію ( git ядро: Зв'язок з повідомленнями про зобов’язання з посиланням на повідомлення про виконання комісії Openstack ). Це також одне з рішень про помилку git-core, пов'язану у відповіді Геррі

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

У цьому коментарі 5 травня 2010 року Джош Тріплетт також пропонує реалізувати відповідну підтримку в git.

Як зазначив Llopis у коментарі, GitHub оголосив про підтримку цього у своєму блозі 29 січня 2018 року: Зверніться разом із співавторами ( детальніше ).


8
Зараз це підтримується GitHub.
llrs

@Llopis Щойно побачив допис у блозі та прийшов сюди, щоб оновити свою відповідь.
Приємно

Я написав простий плагін git, щоб полегшити управління цими трейлерами у співавторстві автоматично: github.com/cac04/git-pair
c--

Такий підхід виглядає як хижість (пор . Базарний шлях ). І є головний автор таким чином, до якого співавтори є лише доповненням, якщо я правильно це розумію.
Руслан

28

Для базару:

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

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


20

git-пара

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

для вас.


13

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?


4

Крім того, у GitHub є проект з відкритим кодом , який я є учасником, який забезпечує хороший спосіб зробити це з командного рядка. Цей проект допомагає встановити псевдонім для того, щоб створити спільні автокредити наступним чином:

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

Використовуючи такий підхід, ви можете створювати спільні авторські комісії без графічного інтерфейсу.


5
Як я бачу, це псевдонім git, який додає "Співавтор:" плюс "співавтор <co-author-email>" в кінці повідомлення про фіксацію.
Каріем

3

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


4
Це схоже на конвенцію про git, про яку Co-Authored-Byя згадував в окремій відповіді
Kariem


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.