2012-03-29 16 views
11

का उपयोग करके gerrit पर पुश करें मैं यह नहीं समझ सकता कि गेरिट को SourceTree धक्का कैसे बनाया जाए।SourceTree

मैं इस लिंक को देखा लेकिन मैं अभी भी समझ में नहीं आता कि यह कैसे किया जा सकता है: https://answers.atlassian.com/questions/29361/configuring-sourcetree-push-for-gerrit

जाहिर 1.3.3 के लिए रिलीज नोट्स के अनुसार यह करने के लिए एक तरह से वहाँ है, लेकिन मैं समझ नहीं सकता यह बाहर: http://www.sourcetreeapp.com/update/ReleaseNotes.html#version-1.3.3

क्या यह कदम उठाने के लिए कहीं भी एक कदम गाइड गाइड है?

अभी मैं पुश करने के लिए

git push origin HEAD:refs/for/master 

उत्तर

27

मेरा मानना ​​है कि Atlassian द्वारा प्रदान की जवाब दूरस्थ शाखा का नाम बदलने के लिए जब आप पुश संवाद दिखाई कहते टर्मिनल पर इस आदेश को चलाते हैं।

  1. खुला धक्का "दूरस्थ शाखा" स्तंभ के अंतर्गत संवाद दूरस्थ शाखा का नाम पर
  2. क्लिक करें
  3. नई Remo शाखा का नाम में लिखें (मेरा वर्तमान में 'गुरु' है) - 'refs होगा जो/के लिए/मास्टर 'मेरे लिए
  4. ठीक क्लिक करें।

ऐसा लगता है कि यह मेरे लिए गेरिट में ठीक से चल रहा है। अब मेरे पास समस्या यह है कि 'refs/for/master' मान जारी नहीं रहता है। अब इसे समझने के लिए। एक बार मैंने यह पता लगाए जाने के बाद मैं इस पोस्ट को अपडेट कर दूंगा। उम्मीद है कि यह गेम के देर से भी मदद करता है।

अपडेट: यह पता चला है कि आपको .git/config में रिमोट मूल के तहत पुश एंट्री जोड़ने की आवश्यकता है। आपको इसे गिट कॉन्फ़िगर कमांड के माध्यम से करना चाहिए (मैंने मैन्युअल रूप से फ़ाइल को संपादित किया था, मुझे यकीन है कि यह खराब अभ्यास है)। धक्का लाइन मैं ने लिखा है:

push = refs/heads/*:refs/for/* 

स्पष्टता यहाँ .git/config में मेरी दूरस्थ मूल प्रविष्टि है:

[remote "origin"] 
    url = ssh://gerrit-test.example.com:29418/mystuff.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    push = refs/heads/*:refs/for/* 

SourceTree में आप अब धक्का कर सकते हैं और यह करने के बजाय Gerrit करने के लिए धक्का होगा अंतिम रेपो (अब आप कुछ भी निर्दिष्ट किए बिना गिट पुश भी कर सकते हैं और यह gerrit को धक्का देगा)। ध्यान दें कि एक पुश के बाद, SourceTree अभी भी पुश बटन पर एक संख्या दिखाएगा जो कहता है कि आपके पास अभी भी धक्का देने के लिए सामान है। ऐसा इसलिए है क्योंकि यह अभी भी मास्टर रेपो से ला रहा है और आपके द्वारा जेरिट में किए गए परिवर्तनों को अभी तक मास्टर रेपो में विलय नहीं किया गया है। एक बार आपके परिवर्तन मास्टर रेपो में विलय हो जाने के बाद पुश बटन पर नंबर गायब हो जाएगा।

+1

मैं दूरस्थ शाखा नाम बदलने में सक्षम था, लेकिन इससे मदद नहीं मिली क्योंकि यह स्थानीय शाखा के लिए मास्टर का उपयोग कर रहा था और सिर नहीं। लेकिन आपकी अपडेट की गई टिप्पणियों ने मेरी .git/config में 'पुश' लाइन जोड़ने में मदद की। – JoseM

+7

फिर से बहुत धन्यवाद। यहां गिट कॉन्फ़िगर कमांड के माध्यम से इसे कैसे किया जाए: 'git config remote.origin.push refs/head/*: refs/for/*' – JoseM

+0

अच्छा। उचित कमांड लाइन उपकरण के साथ बहुत बेहतर है। – mozart27

1

यदि आपके पास गिट फ्लो (http://nvie.com/posts/a-successful-git-branching-model/) के साथ कोई सेटअप है, या इसी तरह, आप अक्सर अपनी स्थानीय शाखा को एक अलग दूरस्थ शाखा में धक्का देना चाहते हैं। ऐसे मामले में जेनेरिक पुश नियम (mozart27 द्वारा उल्लिखित) काम नहीं करेगा क्योंकि यह हमेशा आपकी स्थानीय शाखा को इसी दूरस्थ शाखा में धक्का देता है।

उदाहरण: मेरे पास एक स्थानीय शाखा "सुविधा 123" है जो समीक्षा के लिए तैयार है (यानी गेरिट)। हमारी एकीकरण शाखा "मूल/विकसित" है। यदि मैं जेनेरिक पुश नियम का उपयोग करता हूं तो "feature123" को "मूल/फीचर 123" पर समीक्षा के लिए धक्का दिया जाएगा, लेकिन मैं वास्तव में जो चाहता हूं उसे "मूल/विकास" पर समीक्षा के लिए धक्का देना है।

समाधान: SourceTree में आप एक कस्टम क्रिया बना सकते हैं:

Menu caption: Push for review 
Script to run: cmd 
Parameters: /c git push origin $SHA:refs/for/develop 

इसका इस्तेमाल करने cmd सक्षम करने के लिए अपने रास्ते पर Git जोड़ने का ध्यान रखें।

फिर, "पुश" पर क्लिक करने के बजाय, आप अपनी प्रतिबद्धता पर राइट-क्लिक करें, और "कस्टम क्रियाएं -> समीक्षा के लिए पुश" चुनें।

इन 2 समाधानों का आकलन करने के लिए जेनेरिक पुश नियम होने के साथ-साथ रिमोट शाखा को दबाते समय समीक्षा के लिए हमेशा भेजना और एकीकरण शाखा पर समीक्षा के लिए एक फीचर शाखा भेजना चाहते हैं, तो कस्टम कार्रवाई के साथ सह-अस्तित्व में रह सकते हैं।