मैं Gerrit Code Review के साथ गिट स्थापित कर रहा हूं और गिट के लिए नए उपयोगकर्ताओं के लिए जरूरी गिट कमांड को अपेक्षाकृत सरल बनाने के लिए एक तरीका ढूंढ रहा हूं।गेरिट के साथ उपयोग किए जाने पर गिट के लिए विशिष्ट अपस्ट्रीम पुश रेफस्पेक को कॉन्फ़िगर कैसे करें?
आदेशों एक नई सुविधा शाखा शुरू करने के लिए अनिवार्य रूप से कर रहे हैं मैं वर्तमान में है (यह मानते हुए Gerrit origin
है):
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
यह एक नया काम पैकेज work1234
कुछ baseline
से branched शुरू होता है, और अंतिम धक्का शाखा बनाता है गेरिट में और अपस्ट्रीम सेट करता है।
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
समीक्षा के लिए नई प्रतिबद्ध अब, Gerrit चाहता है के लिए एक विशेष refspec पर लाई जानी, उदाहरण के लिए refs/for/work1234
: तो .git/config
तरह दिखता है। मैं के साथ मैन्युअल रूप से कर सकते हैं:
git push origin work1234:refs/for/work1234
मुझे क्या करना चाहते हैं .git/config
स्थापित करने के लिए इतना है कि एक सादे git push
दूरस्थ कि Gerrit की आवश्यकता पर refspec करने के लिए वर्तमान शाखा धक्का होगा किसी तरह लगता है। मैं निम्नलिखित git config
क्षेत्रों पर ध्यान दिया है:
branch.<name>.*
-push.default
refspec धक्का स्थापित करने के लिए किसी भी विशिष्ट विकल्प होता है प्रतीत नहीं होता है - मैं इन सबसे छुटकाराupstream
यहाँremote.<name>.push
चाहता हूँ - मैंrefs/heads/*:refs/for/*
की कोशिश की यहां परgit push
हमेशा इस मामले में सभी स्थानीय शाखाओं को धक्का देना चाहता है, जबकि मैं सिर्फ वर्तमान शाखा
यदि मैं गिट को स्वयं ही ऐसा नहीं कर सकता, तो मैं एक छोटी रैपर स्क्रिप्ट लिखूंगा जो पूरी तरह से refspecs निर्दिष्ट करता है। हालांकि, यह बेहतर होगा अगर गिट सही जगह पर सही जगह पर धक्का दे सके।
#!/bin/sh -e
if [ -z "$1" ]; then
REMOTE=origin
else
REMOTE=$1
fi
BRANCH=`git symbolic-ref HEAD`
case $BRANCH in
refs/heads/*)
BRANCH=`basename $BRANCH`
;;
*)
echo "I can't figure out which branch you are on."
exit 1
;;
esac
git push $REMOTE HEAD:refs/for/$BRANCH
मैं /usr/local/libexec/git-core/git-submit
में इस स्क्रिप्ट डाल दिया और अब वहाँ एक आदेश है समीक्षा के लिए Gerrit करने के लिए नए कोड प्रस्तुत करने के लिए:
$ git submit
तो Gerrit है
यदि मैं हमेशा एक निश्चित गंतव्य पर धक्का देना चाहता हूं, तो 'रिफ/के लिए/मास्टर' कहें तो एक आसान गिट-केवल समाधान होगा? ([यहां है] (http://stackoverflow.com/questions/29664305/equivalent-of-branch-name-merge-for-git-push) मेरा SO प्रश्न आपकी समस्या का सरल संस्करण पूछ रहा है।) – Pradhan