2016-06-01 7 views
5

चलो देखते हैं कि यह क्या हैमैं सामान्य निर्देशिका के रूप में गिट रेपो में गिट सबमिशन कैसे जोड़ सकता हूं?

  • में दो Git रेपो sub & test
 
mkdir test sub 
cd test && git init && touch README && git add README && git commit -m "initialize the git repo" && cd .. 
cd sub && git init && touch README && git add README && git commit -m "initialize the sub git repo" && cd .. 
  • बनाएं sub रेपो ले जाएँ test
 
mv sub test 
cd test 
git add sub 
git commit -m "add sub directory" 

मैं उन्हें एक गिट रेपो के रूप में व्यवहार करना चाहता हूं और उन्हें दूरस्थ रूप से धक्का देना चाहता हूं, लेकिन अब sub निर्देशिका के अंतर्गत फ़ाइलों को शामिल नहीं किया जा सकता है?

मैं इसे सरल तरीके से कैसे प्राप्त कर सकता हूं जैसे सामान्य उप सामान्य शब्द के रूप में? इस

मैं डेमो के लिए Dockerfile का उपयोग कर डोकर छवियों में मेरी जेनकींस डेटा फ़ोल्डर (JENKINS_HOME) जोड़ने की कोशिश के लिए

उपयोग मामला। (ADD JEKINS_HOME /opt/jenkins)

JENKINS_HOME 
Dockerfile 

मेरे Jenkin scriptler plugin जो अपने उद्देश्य के लिए Git रेपो शामिल है। फिर यह मेरे डॉकर छवि गिट रेपो में

 
$ find jenkins-docker 
./.git 
./.git/.. (skipped 
./Dockerfile 
./JENKINS_HOME 
./JENKINS_HOME/scriptler 
./JENKINS_HOME/scriptler/scripts 
./JENKINS_HOME/scriptler/scripts/.git 
./JENKINS_HOME/scriptler/scripts/.git/... (skipped) 
./JENKINS_HOME/scriptler/scripts/Sample.groovy 
./JENKINS_HOME/... (skipped) 
./README 

उत्तर

1

लगता है कि आप ऐसा नहीं कर सकते हैं। https://github.com/git/git/blob/fe9122a35213827348c521a16ffd0cf2652c4ac5/dir.c#L1260

शायद एक तरह से एक स्क्रिप्ट जो किसी और और वापस से पहले कुछ करने के लिए .git का नाम बदलता है बनाने के लिए है और scripts तहत

तरह रेपो में इसे जोड़ने कार्यशील निर्देशिका में बाद: नाम .git हार्ड-कोडेड स्रोत कोड में है

mv .git hidden-git 

Dockerfile में

RUN mv $JENKINS_HOME/scriptler/scripts/hidden-git  
$JENKINS_HOME/scriptler/scripts/.git 

ऑल्टर मूल रूप से, शायद प्लगइन में GIT_DIR पर्यावरण चर पारित करना संभव है, इसलिए यह एक और नाम का उपयोग कर सकता है।

+0

कि प्लगइन का behavier बदलने के लिए अच्छा होगा। लिपि शायद इतना बुरा नहीं है। –

+0

@LarryCai अगर मैं इस कोड को सही तरीके से पढ़ता हूं, तो यह GIT_DIR अनुकूलन का समर्थन नहीं करता है ... इसलिए कोड को संशोधित किए जाने तक आप इसे तब तक नहीं कर सकते हैं। https://github.com/jenkinsci/git-server-plugin/blob/42393f76d7f5678f9ca49f8a76252be2cfa244c2/src/main/java/org/jenkinsci/plugins/gitserver/FileBackedHttpGitRepository.java#L53 इसमें कुछ अनुकूलन मूल्य के साथ 'setGitDir' होना चाहिए , लेकिन यहां कुछ नहीं। – kan

+0

नहीं, इसलिए मैं इसे संभालने के लिए स्क्रिप्ट का उपयोग करूंगा। –

0
git add sub 
git commit -m "add sub directory" 

मैं उन्हें एक Git रेपो के रूप में इलाज और उन्हें दूर से पुश करने के लिए चाहते हैं, लेकिन अब उप निर्देशिका के अंतर्गत फ़ाइलें शामिल नहीं किया जा सकता?

वे शामिल नहीं है क्योंकि test रेपो subas nested git repo, and records only its gitlink, or SHA1, और नहीं अपने यूआरएल अगर sub एक submodule के रूप में जोड़ा गया था के रूप में यह होता देखता है कर रहे हैं।

आपको sub को पहले एक दूरस्थ यूआरएल पर धक्का देना होगा, और फिर इसे sub फ़ाइलों को देखने के लिए test के लिए सबमिशन के रूप में जोड़ें।

cd test 
git submodule add -- /url/to/sub 

या आप की आवश्यकता होगी to use a subtree

cd test 
git subtree --prefix sub /url/to/sub master --squash 
+0

धन्यवाद, और उपयोग का मामला इस समाधान के लिए उपयुक्त नहीं है –

संबंधित मुद्दे