कैसे कई डेवलपर्स के लिए एक प्रतिबद्ध करने के लिए विशेषता है?


120

जिस तरह से सभी संस्करण नियंत्रण प्रणाली मैं काम से परिचित हूं, वह यह है कि प्रत्येक प्रतिबद्ध एक एकल डेवलपर के लिए जिम्मेदार है। एजाइल इंजीनियरिंग और विशेष रूप से जोड़ी प्रोग्रामिंग के उदय ने एक ऐसी स्थिति पैदा कर दी है जहां दो डेवलपर्स ने एक ही कार्य में महत्वपूर्ण योगदान दिया है, उदाहरण के लिए बग फिक्स।

कार्य के माहौल में एट्रिब्यूशन का मुद्दा बहुत बड़ी बात नहीं होगी क्योंकि प्रोजेक्ट मैनेजर उन कार्यों से अवगत होगा जो जोड़े कर रहे हैं, लेकिन क्या होगा अगर दो ओपन सोर्स योगदानकर्ता जोड़ी बनाने और कुछ कोड को पुश करने का निर्णय लेते हैं एक विशेष परियोजना के लिए कोई विचार नहीं है कि वे एक साथ काम कर रहे हैं। कई डेवलपर्स के लिए एक विशेष पैच विशेषता के लिए Git जैसी एक संस्करण नियंत्रण प्रणाली के लिए कोई रास्ता नहीं है?


10
इसे प्रत्येक संस्करण नियंत्रण प्रणाली के लिए विभाजित किया जाना चाहिए।
सिरो सेंटिल्ली 郝海东 i i i 法轮功 '12

जवाबों:


63
Commit title

Commit body

Co-authored-by: name <additional-dev-1@example.com>
Co-authored-by: name <additional-dev-2@example.com>

इस दृष्टिकोण के साथ एक समस्या यह है कि आप देवों के इस समूह के लिए एक हस्ताक्षरित कुंजी नहीं बना सकते हैं, इसलिए आप अनिवार्य रूप से इस सूची में किसी को भी जोड़ सकते हैं, भले ही वे एक फीचर पर काम न करें और गितुब इसे मानेंगे जैसे उन्होंने किया था। हालांकि, यह ज्यादातर मामलों में एक मुद्दा नहीं होना चाहिए।

जैसे Co-authored-by: Linus Torvalds <torvalds@linux-foundation.org>

सामान्य लेखकों या हस्ताक्षर करने वाले समूहों (पुरानी पद्धति) के साथ आप देखेंगे कि यह हस्ताक्षरित नहीं है और यह जानते हैं कि आप प्रतिबद्ध पर भरोसा नहीं कर सकते। हालांकि, सह-लेखकों पर कोई हस्ताक्षर करने की प्रक्रिया नहीं है।


अधिकतर पुराना उत्तर:

एक समाधान जोड़ी के लिए एक नाम निर्धारित करना होगा:

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

यहाँ अन्य अस्थायी समाधान के साथ एक संबंधित बग रिपोर्ट है:

बग गिट-कोर: Git को एक प्रतिबद्ध के लिए कई लेखकों का समर्थन करना चाहिए


1
यदि आप उस व्यक्ति के ईमेल पते को नहीं जानते हैं तो क्या होगा? GitHub यूजरनेम आदि को लिंक करने का कोई तरीका?
एरोन फ्रेंके

यदि उन्होंने एक पिछली प्रतिबद्धता बनाई है तो आप बस यह देख सकते हैं कि:git show <COMMIT_ID> --format=email
Gerry

2
ऐसा लगता है कि पहले से ही GitLab ( gitlab.com/gitlab-org/gitlab-foss/merge_requests/17919 देखें ) में काम कर रहा है
Meiogordo

67

एक जीआईटी सम्मेलन, सह-लेखक-द्वारा प्रतिबद्ध संदेश के अंत में उपयोग करने के लिए है ( गिट कर्नेल: संदेश संदेश , ओपनस्टैक कमिट मैसेज का जिक्र करते हुए )। यह भी गैरी के जवाब में जुड़े गिट-कोर बग पर समाधान में से एक है

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

5 मई, 2010 को उस टिप्पणी में, जोश ट्रिपलट ने यह भी कहा कि इसी समर्थन को लागू करने का सुझाव।

जैसा कि ल्लोपिस ने एक टिप्पणी में बताया, गीथहब ने 29 जनवरी, 2018 को अपने ब्लॉग पर इसके लिए समर्थन की घोषणा की: सह-लेखकों ( विवरण ) के साथ मिलकर


8
यह अब GitHub द्वारा समर्थित है।
18'18

@ लोपोपिस ने ब्लॉग पोस्ट देखी और मेरे जवाब को अपडेट करने के लिए यहां आया। किसी को देखने के लिए अच्छा था :)
Kariem

मैंने इन सह-लेखक ट्रेलरों को स्वचालित रूप से प्रबंधित करना आसान बनाने के लिए एक सरल 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

यह सरल स्क्रिप्ट पिवटाल से गिट जोड़ी प्रोग्रामिंग एट्रिब्यूशन को स्वचालित करने के लिए है।

आप एक .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 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] गिट में लेखक और कमिटर के बीच अंतर?


4

वैकल्पिक रूप से, एक खुला स्रोत परियोजना है , जिसका मैं एक योगदानकर्ता हूं, GitHub पर जो कमांड लाइन से इसे करने का एक अच्छा तरीका प्रदान करता है। यह परियोजना आपको निम्न प्रकार से सह-आबद्ध बनाने के लिए एक उपनाम स्थापित करने में मदद करती है:

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

इस दृष्टिकोण का उपयोग करते हुए, आप ग्राफ़िकल इंटरफ़ेस के बिना सह-अधिकृत कमिट्स बनाने में सक्षम हैं।


5
मैं जो देख सकता हूं, यह एक ऐसा उपनाम है जो प्रतिबद्ध संदेश के अंत में "सह-लेखक-द्वारा:" प्लस "सह-लेखक <सह-लेखक-ईमेल>" जोड़ता है।
कारीम

3

हम एक सम्मेलन के रूप में अंत में प्रत्येक प्रतिबद्ध संदेश में अपना नाम जोड़ते हैं: Implemented cool feature <Aneesh | Hiren>


4
यह एक अलग जवाबCo-Authored-By में उल्लेखित जीआईटी सम्मेलन के समान है
Kariem


1

अधिकांश सह-लेखक उपकरण स्वतः पूर्णता का समर्थन नहीं करते हैं। आप git-coco की कोशिश कर सकते हैं , इसके python3 में लिखा है (मैं डेवलपर हूं)। git-cocoस्वत: पूर्ण और ऑटो-सुझाव का समर्थन करता है। यहाँ नमूना लेखकों पर एक स्नैपशॉट स्वत: पूर्ण है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.