web-dev-qa-db-ja.com

単一のコミットを複数の開発者に帰属させる方法は?

私が仕事に精通しているすべてのバージョン管理システムは、各コミットが単一の開発者に帰属しているということです。アジャイルエンジニアリング、特にペアプログラミングの台頭により、2人の開発者が同じタスク(バグ修正など)に大きく貢献したという状況が生じています。

プロジェクトマネージャーはペアが行っている作業に気付くので、帰属の問題は作業環境ではさほど重要ではありませんが、2人のオープンソースの貢献者がペアを組んでコードをプッシュすることにした場合彼らが一緒に働いていることを知らない特定のプロジェクトに。 Gitのようなバージョン管理システムが特定のパッチを複数の開発者に帰属させる方法はありますか?

84
user360907
Commit title

Commit body

Co-Authored-By: name <[email protected]>
Co-Authored-By: name <[email protected]>

このアプローチの問題の1つは、このグループの開発者に対して署名付きのキーを作成できないことです。そのため、機能で機能していなくても、GitHubはそれをあたかも扱うように、本質的に誰でもこのリストに追加できます。ただし、ほとんどの場合、これは問題になりません。

例えばCo-Authored-By: Linus Torvalds <[email protected]>

通常の作成者または署名グループ(古い方法)では、署名されていないことがわかり、コミットを信頼できないことがわかります。ただし、共著者の署名プロセスはありません。


ほとんど時代遅れの答え:

1つの解決策は、ペアの名前を設定することです。

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

他の一時的なソリューションと関連するバグレポートは次のとおりです。

バグgit-core:Gitはコミットに対して複数の作成者をサポートする必要があります

33
Gerry

Git規約では、コミットメッセージの最後にCo-Authored-Byを使用します( git kernel:Commit Message ConventionsOpenstack Commit Messages )を参照してください。これも 解決策の1つですgit-coreバグ リンク先 Gerryの答え

Co-authored-by: Some One <[email protected]>

2010年5月5日のそのコメントで、Josh Triplettは、gitで対応するサポートを実装することも提案しています。

Llopis がコメントで指摘したように、GitHubは2018年1月29日にブログでこのサポートを発表しました: 共著者と一緒にコミットする詳細 ).

62
Kariem

バザールの場合:

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

これらの名前は、コミッター名とは別にログに表示されます。

24
bialix

git-pair

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

Gitペアプログラミング属性を自動化するPivotalのこのシンプルなスクリプト。

次のような.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
[email protected]

あなたのために。

gitは、コミットのauthorcommitter [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での著者とコミッターの違い?

13
Jakub Kukul

慣例として、各コミットメッセージに最後に名前を追加します。例:Implemented cool feature <Aneesh | Hiren>

2
Aneesh

git-mobを試してください 、コミットの共著者を帰属させるために構築しました。

例えば。

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

あるいは、GitHubに オープンソースプロジェクト があり、コマンドラインから実行するのに適した方法です。このプロジェクトは、次のように自動コミットを作成するためにエイリアスを設定するのに役立ちます。

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

このアプローチを使用すると、グラフィカルインターフェイスなしで共同作成されたコミットを作成できます。

2