2012-12-17 16 views
7

मैं क्या करना चाहता हूं: मैं जिथब का उपयोग कर रहा हूं। मेरे पास दो शाखाएं हैं। मास्टर और gh-pages। मेरे पास मेरी मास्टर शाखा पर एकता 3 डी प्रोजेक्ट है। जब मैं इसे चलाता हूं, तो यह एक वेबपृष्ठ उत्पन्न करेगा। मैं gh-pages शाखा पर वेबपृष्ठ की सामग्री प्रदर्शित करना चाहता हूं।मास्टर शाखा से gh-pages शाखा में निर्मित

मुझे लगता है कि इसका मतलब है कि मुझे अपने भंडार की दो शाखाओं के बीच एक फ़ोल्डर साझा करना है। यह लगभग असंभव प्रतीत होता है।

क्या ऐसा करने का कोई सही तरीका है? मेरा वर्तमान समाधान दो गीथब परियोजनाएं बना रहा है और पहले से दूसरे में निर्माण कर रहा है। फिर, मैं दूसरे के लिए gh-page देखता हूं। यह बहुत लगता है ... अपरिपक्व। मुझे यह सब एक परियोजना के साथ करने में सक्षम होना चाहिए।

+0

ओ.ओ. यह एक बहुत ही अजीब स्थिति है ... मैंने उन पृष्ठों से वेब पेज को एक अलग शाखा पर संभाला होगा। –

+0

मुझे यह बहुत लंबे समय तक ऐसा करने की उम्मीद नहीं है। जल्द या बाद में, गेम को अपनी वेबसाइट मिल जाएगी, लेकिन अब निर्माण/प्रतिबद्धता को हिट करने में सक्षम होने के लिए और बिना किसी अन्य मजाकिया व्यवसाय के होस्ट किया जा सकता है। – tavoe

+0

यहां कुछ ऐसा है जो काम करता है: "गिट चेकआउट मास्टर वेबप्लेयर/वेबप्लेयर.यूशन 3 डी"। Gh-pages से चलाएं और यह वेब प्लेयर में खींच जाएगा। अब, क्या मैं हर बार gh-pages करने से पहले, उस स्क्रिप्ट को चलाने के लिए गिट को स्वचालित कर सकता हूं? – tavoe

उत्तर

1

यह जेकिल वर्कफ़्लो के समान है। कहें unity3d सामग्री foo नामक फ़ोल्डर में उत्पन्न होती है। इस

git checkout master 
<run unity3d> 
git checkout gh-pages 
git rm -qr . 
cp -r foo/. . 
rm -r foo 
git add 
git commit 

Example

9

तुम बस पहले भंडार के अपने काम निर्देशिका संरचना के भीतर फिर से अपने भंडार क्लोन कर सकते हैं foo.gitignore में जोड़े तो है। तो स्थानीय स्तर पर, आप इस फ़ोल्डर संरचना है:

project 
|- .git/ 
|- .gitignore 
|- (other project related files) 
|- deploy/ 
    |- .git/ 
    |- (deployed files) 

दोनों project और deploy अपनी परियोजना के खजाने क्लोन कर रहे हैं; deploy में gh-pages शाखा की जांच की गई है। बाहरी .gitignore स्पष्ट रूप से deploy/ सूचीबद्ध करता है, इसलिए फ़ोल्डर के लिए फ़ोल्डर को अनदेखा किया जाता है।

अब, जब तैनाती, आप सभी फ़ाइलों को तैनाती फ़ोल्डर में सीडी में प्रकाशित करते हैं, तो, एक git add ., git commit, git push और उत्पन्न फ़ाइलों तैनात किया गया है है।

जाहिर है यह आपको अपने मास्टर और gh-pages शाखा के बीच वास्तविक संबंध नहीं देगा, लेकिन दोनों एक ही भंडार में एक दूसरे से पूरी तरह से स्वतंत्र रहेंगे।

+0

इस पर एक [अपेक्षाकृत लोकप्रिय जिस्ट] (https://gist.github.com/chrisjacob/825950) पर चर्चा की गई है। –

0

मैं अपने डॉक्सन दस्तावेज़ों को मास्टर से gh-pages "आसानी से" धक्का देना चाहता था।

मैंने इसी तरह के समाधान पढ़े और मेरी आंखें चमक गईं।

मेरे समाधान किया गया था:

  1. स्रोत शाखा: फ़ाइलों को एक .gitignore सूचीबद्ध किया है "अस्थायी निर्देशिका" GH-पृष्ठों के लिए (जो .gitignore सूचीबद्ध निर्देशिका को बरकरार रखता है)
  2. परिवर्तन शाखाओं
  3. gh -pages शाखा: उचित निर्देशिका के लिए अस्थायी निर्देशिका से rsync
  4. gh-पृष्ठों शाखा: उचित स्थान निर्देशिका 'Git -u जोड़ें'
  5. gh-पृष्ठों शाखा: 'Git प्रतिबद्ध'

यह अभी भी मैन्युअल रूप से अद्यतन चलाने और काम करने की आवश्यकता है, जो कि यदि आप केवल विशिष्ट बिल्डों से वेबसाइट पर पोस्ट कर रहे हैं तो यह अच्छी बात हो सकती है।सनक से भयानक gh-pages NPM मॉड्यूल https://github.com/nekenyu/libBsdSockets/blob/gh-pages/update_doc.sh

1

चेक आउट:

में उदाहरण (ज्यादातर टिप्पणियां)। कोड की कुछ लाइनें, जैसे के साथ:

var ghpages = require('gh-pages'); 
var path = require('path'); 
ghpages.publish(path.join(__dirname, 'dist'), function(err) { ... }); 

आप gh-पृष्ठों शाखा बनाते हैं, और यह GitHub करने के लिए धक्का होगा!

और अधिक विस्तार में, डॉक्स से:

इस कार्यप्रणाली को कॉल वर्तमान भंडार की एक अस्थायी क्लोन पैदा करेगा, अगर कोई पहले से ही अस्तित्व में नहीं है एक gh-pages शाखा बनाने के आधार से सभी फाइलों को कॉपी पथ, या केवल वे जो वैकल्पिक src कॉन्फ़िगरेशन से पैटर्न से मेल खाते हैं, सभी परिवर्तन करते हैं, और origin दूरस्थ पर धक्का देते हैं।

यह सुपर कॉन्फ़िगर करने योग्य है, और मेरे लिए एक आकर्षण की तरह काम करता है।

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