मैं गितुब पेज के साथ प्रलेखन को कैसे सिंक कर सकता हूं?


81

मेरे पास कई लोगों के साथ एक परियोजना है और हमारे पास README.mdGitHub Flavored Markdown का एक गुच्छा है जो हमारे GitHub पृष्ठ पर प्रदान किया गया है। हमने एक GitHub Pages ब्रांच भी स्थापित की है जिसे हमारे GitHub Organisation के उपडोमेन के तहत होस्ट किया गया है, और जब हमने अपना पेज बनाया है , तो ऑटोमैटिक पेज जेनरेटर का उपयोग केवल हमारी README.mdफाइल में लोड करना है । हालाँकि, मुझे लगता है कि जब मैं हमारी README.mdफाइल को अपडेट करता हूं , तो यह प्रोजेक्ट पेज को अपडेट नहीं करता है। इसके बजाय, हमें GitHub सेटिंग्स टैब पर जाना होगा और प्रोजेक्ट पेज को फिर से बनाना होगा, README.mdजब हम ऐसा करेंगे तो फाइल को फिर से लोड करना होगा।

इसके अलावा, GitHub परियोजना निर्देशिका पृष्ठों पर प्रलेखन फ़ाइलों के बीच काम कर रहे रिश्तेदार को जोड़ने के बारे में पढ़ने के बाद । मुझे मार्कडाउन बहुत पसंद है क्योंकि यह हमारे प्रलेखन के लिए हाथ से सभी एचटीएमएल को लिखने से बहुत समय बचाता है। हालाँकि मैं चाहूंगा कि एक README.mdफ़ाइल हो जो अन्य दस्तावेज़ीकरण फ़ाइलों के सापेक्ष लिंक को शामिल करने में सक्षम हो docs/*.md। मैं उम्मीद कर रहा था कि एक आसान समाधान हो सकता है ताकि मेरी अन्य दस्तावेज़ीकरण फाइलें भी मेरे gh-Pages शाखा में शामिल हो सकें और मेरे GitHub Pages उपडोमेन के तहत होस्ट की जा सकें और / और थीम्ड किया जा सके।

दूसरे शब्दों में, मेरे प्रश्न हैं:

  • क्या कोई तरीका है कि मेरी README.md फाइल मेरे Github पेज सबडोमेन पर स्वतः अपडेट हो जाए?
    • [संपादित करें]: स्वचालित पेज जेनरेटर का उपयोग करने पर कोई उत्तर नहीं प्रतीत होता है। आपको रेपो के लिए सेटिंग पेज पर जाना होगा और इसे अपडेट करने के लिए हर बार इसे फिर से लोड करना होगा।
       
  • क्या मेरे Github पेजों पर मेरे README.md फ़ाइल कार्य पर मेरे दस्तावेज़ के लिए मेरे रिश्तेदार लिंक हो सकते हैं, क्या कोई तरीका है, शायद मेरे किसी तरह /docs/*.mdसे मेरे Github पेजों को सिंक कर रहा है और किसी तरह उन्हें प्रतिपादन और / या उन्हें प्रदर्शित कर रहा है?
    • [संपादित करें]: से मैं क्या इस प्रश्न लिखने के बाद से सीखा है ऐसा लगता है कि यह एक के उपयोग के माध्यम GitHub पृष्ठों पर ही संभव है स्थिर साइट जनरेटर माणिक रत्न की तरह Jekyll और शायद के कुछ ऐसे उपयोग GitHub द्वारा समर्थित webhooks कि उल्लेख कर रहे हैं नीचे टिप्पणी में। मैं वर्तमान में एक इष्टतम समाधान खोजने की कोशिश कर रहा हूं।
       
  • बेहतर अभी तक, वहाँ एक आसान तरीका है कि मैं यह कर सकता हूँ और शायद मेरे README.md और प्रलेखन की एक ही प्रतिलिपि है जो कि gh-pages और मेरे मुख्य शाखा दोनों पर उपयोग किया जाता है और सब कुछ आसान बनाता है?
    • [संपादित करें]: ऐसा लगता है कि यह लगभग निश्चित रूप से एक नहीं है। मैं इसे अनुमति देने के लिए GitHub में निर्मित कुछ की संभावना के बारे में सोच रहा था। ऐसा लगता है कि भविष्य में इस तरह के काम के लिए बेहतर समर्थन GitHub पेज में बनाया जा सकता है, या कम से कम मुझे उम्मीद है कि यह होगा।
       

3
GitHub को पोस्ट-प्राप्त वेबहुक के लिए समर्थन है। क्या आपने हुक जोड़ने के बारे में सोचा है जो कुछ दूरस्थ स्क्रिप्ट को कॉल करता है जो नए README.mdसंस्करण को GitHub पृष्ठों में धकेलता है ?
ubik

7
अपने निष्कर्षों में भयानक और संपादन होने के लिए धन्यवाद। इस साइट पर पर्याप्त लोग ऐसा नहीं करते हैं।
मैट कंटोर

पहले प्रश्न के लिए, यहां एक मैनुअल दृष्टिकोण है , ऑटो नहीं है, लेकिन यह सरल है और काम करता है। HTML पीढ़ी के भाग के लिए, कोई dillinger.io का उपयोग कर सकता है । मुझे यह स्वचालित विधि भी मिल गई है , हालांकि मैंने इसे आज़मा लिया था, लेकिन इसे काम करने के लिए नहीं मिला।
बजे

1
GitHub ने डॉक्स के लिए स्रोत के रूप में किसी भी शाखा और निर्देशिका का उपयोग करने में सक्षम किया है । अब आपको उपयोग नहीं करना है gh-pages
डैन डस्केल्सस्कु

जवाबों:


37

मैं एक समाधान पोस्ट करने जा रहा हूं जो मैं सेटअप करता हूं जो इस तथ्य का लाभ उठाता है कि GitHub Pages Jekyll का उपयोग पहले से ही स्वचालित कंप्यूटर जनरेटर का उपयोग करता है।

  1. git checkout gh-pages
  2. mkdir _layouts
  3. mv index.html _layouts
  4. git checkout master -- README.md
  5. mv README.md index.md
  6. निम्न पाठ के लिए प्रस्तुत करें index.md

 

---
layout: index
---

आपको index.htmlफ़ाइल खोलने और निम्नलिखित परिवर्तन करने की भी आवश्यकता है :

  1. अपनी README.mdफ़ाइल में मार्कडाउन से प्रदान किए गए HTML को हटा दें । यह आमतौर पर <section>या <article>टैग के बीच होता है । इस HTML को टेक्स्ट से बदलें इससे {{ content }}हम इस फाइल को जेकेल के रूप में उपयोग कर पाएंगे। वह फ़ाइल जिसे हम लेआउट लागू करते हैं, उस स्थान पर रखा जाएगा जहाँ सामग्री टैग है।

  2. अपने प्रोजेक्ट पेज थीम के लिए CSS का पता लगाएँ। मेरे लिए यह निम्नलिखित की तरह एक पंक्ति थी:

    <link rel='stylesheet' href='stylesheets/stylesheet.css' />

    इसे बदलने की जरूरत है

    <link rel='stylesheet' href='{{ site.path }}/stylesheets/stylesheet.css' />

  3. आपकी साइट पर संग्रहीत कोई भी अन्य संपत्ति जो इस लेआउट में उपयोग की जाएगी, उसके साथ भी उपसर्ग करना होगा {{ site.path }}

ऐसा करने से, Jekyll निर्देशिका index.htmlमें लेआउट की सामग्री के रूप में मार्कडाउन फ़ाइल को प्रस्तुत करेगा _layouts। न केवल README.md फ़ाइल के लिए इस प्रक्रिया को स्वचालित करने के लिए, बल्कि अन्य डॉक्स जो आपके मास्टर शाखा में हो सकते हैं, मैंने निम्नलिखित कदम उठाए हैं:

post-commitनिम्नलिखित नामक फ़ाइल बनाई गई :

 

#!/bin/bash
###
### The following block runs after commit to "master" branch
###
if [ `git rev-parse --abbrev-ref HEAD` == "master" ]; then

    # Layout prefix is prepended to each markdown file synced
    ###################################################################
    LAYOUT_PREFIX='---\r\nlayout: index\r\n---\r\n\r\n'

    # Switch to gh-pages branch to sync it with master
    ###################################################################
    git checkout gh-pages

    # Sync the README.md in master to index.md adding jekyll header
    ###################################################################
    git checkout master -- README.md
    echo -e $LAYOUT_PREFIX > index.md
    cat README.md >> index.md
    rm README.md
    git add index.md
    git commit -a -m "Sync README.md in master branch to index.md in gh-pages"

    # Sync the markdown files in the docs/* directory
    ###################################################################
    git checkout master -- docs
    FILES=docs/*
    for file in $FILES
    do
        echo -e $LAYOUT_PREFIX | cat - "$file" > temp && mv temp "$file"
    done

    git add docs
    git commit -a -m "Sync docs from master branch to docs gh-pages directory"

    # Uncomment the following push if you want to auto push to
    # the gh-pages branch whenever you commit to master locally.
    # This is a little extreme. Use with care!
    ###################################################################
    # git push origin gh-pages

    # Finally, switch back to the master branch and exit block
    git checkout master
fi

संपादित करें: मैंने README.mdफ़ाइल और मार्कडाउन दोनों के लिए उपरोक्त स्क्रिप्ट docs/*को एक ही लेआउट फ़ाइल का उपयोग करने के लिए अद्यतन किया । यह पहले की तुलना में कहीं बेहतर सेटअप है। यह स्क्रिप्ट आपकी .git/hooks/निर्देशिका में जाती है । बैश अपने रास्ते में होना चाहिए।

_config.ymlनिम्न के साथ फ़ाइल बनाएँ

markdown: redcarpet
path: http://username.github.io/reponame

उपरोक्त स्क्रिप्ट शाखा की docs/*निर्देशिका में मिली मार्कडाउन फाइलों को भी समेटती है master, ताकि उन्हें GitHub Pages साइट पर भी देखा जा सके। यदि आप शाखा .mdपर एंकरों से एक्सटेंशन स्ट्रिप करने के लिए निम्न jQuery फ़ंक्शन को शामिल करते हैं, तो इन दस्तावेज़ों से संबंध जोड़ना काम करता है gh-pages। आप निर्देशिका index.htmlमें निम्न स्क्रिप्ट जोड़ सकते हैं _layouts:

$(document).on('ready', function () {
    $('a').each(function (i, e) {
        var href = e.href;
        if (href.search('.md') > 0)
            $(this).attr('href', href.split('.md')[0]);
    });
});

संपादित करें: मैंने अपनी रिपॉजिटरी में ऊपर दिए गए कोड को बदल दिया, यह ऐसा करने का एक त्वरित और गंदा तरीका था, लेकिन यह सभी मामलों में सही काम नहीं करेगा यदि आप जानते हैं कि मेरा क्या मतलब है .. उदाहरण के लिए, मार्कडाउन फ़ाइल company.mdata.mdसंसाधित नहीं होगी। सही ढंग से। इसे ठीक करने के लिए मैंने इसे निम्न लिपि में अद्यतन किया जो अधिक ध्यान से href की जाँच करता है और यदि मिला तो एक्सटेंशन निकाल देता है। मैंने स्क्रिप्ट को और अधिक सामान्य बना दिया, जिससे इसका उपयोग extचर को बदलकर अन्य एक्सटेंशन निकालने के लिए किया जा सके । यहाँ कोड है:

$(function () {
    $('a').each(function () {
        var ext = '.md';
        var href = $(this).attr('href');
        var position = href.length - ext.length;
        if (href.substring(position) === ext)
            $(this).attr('href', href.substring(0, position));
    });
});

मैं CoryG89 / docsync पर एक उदाहरण रेपो सेटअप करता हूं , जिसका यहां एक परियोजना पृष्ठ है , अगर आप यह देखना चाहते हैं कि सभी एक साथ कैसे काम करते हैं।


4
मैं आपको इस तरह का जवाब देने के लिए अपना इनाम दे रहा हूं, लेकिन मुझे उम्मीद है कि कोई और अधिक सरल समाधान के साथ आएगा।
मैट कांटोर

1
मैं उस मैट की सराहना करता हूं। मैं आगे बढ़ने जा रहा हूं और ऐसा करने के लिए एक और आसान / सरल समाधान की उम्मीद में उस पर एक और इनाम रखने के लिए 50 प्रतिनिधि का उपयोग कर रहा हूं। यह समाधान अच्छा है क्योंकि यह आपकी साइट पर और साथ ही आपकी साइट पर आपके README और अन्य मार्कडाउन डॉक्स के बीच अपेक्षित रूप से काम करना जारी रखने की अनुमति देता है।
कोरी ग्रॉस

1
क्या पोस्ट-कमिट हुक में सिर्फ .md एक्सटेंशन स्ट्रिप करना आसान नहीं होगा? या हो सकता है कि जेनकींस का उपयोग करने का भी एक तरीका हो?
jjmerelo

मुझे लगता है कि आपको .md एक्सटेंशन के साथ फाइलों को स्टोरेज में रखना होगा अन्यथा इसे मार्कडाउन के रूप में प्रस्तुत नहीं किया जाएगा। हालांकि उस पर 100% नहीं।
कोरी ग्रॉस

2
2016 में कुछ और सरल हैं?
पीटर क्रूस

5

Github पेज के साथ एक README को सिंक करने की समस्या का मेरा समाधान ऊपर से थोड़ा विचलन करता है। एक अलग जावास्क्रिप्ट मार्कडाउन इंजन का उपयोग करने के बजाय, एक HTML के रूप में प्रदान की गई मार्कडाउन फ़ाइल को वापस करने के लिए जीथब एपीआई का उपयोग कर सकता है।

  1. लायें README.mdसे https://api.github.com/repos/<owner>/<repo>/contents/README.md
  2. बेस 64 प्रतिक्रिया को डिकोड करें: window.atob( JSON.parse( blob ).content );
  3. JSON बॉडी में डीकोड READMEकरेंhttps://api.github.com/markdown

     {
       "text": "<README>",
       "mode": "markdown",
       "context": "<owner>/<repo>"
     }
    
  4. ब्रैड रोड्स द्वारा किए गए एक HTML तत्व में प्रदान किए गए HTML डालें ।

इस दृष्टिकोण के लिए दो चेतावनी:

  1. दो सीरियल अनुरोध करने से पृष्ठ लोड धीमा हो जाता है।
  2. Github API एक्सेस करते समय एनकाउंटर की दर सीमित हो सकती है।

कम ट्रैफ़िक पृष्ठ के लिए जहां लोड समय महत्वपूर्ण नहीं है (~ 1-2 सेकंड), तो उपरोक्त विधि पर्याप्त रूप से काम करती है।


atob () Chrome और FF में ठीक काम करता है लेकिन IE 11 में नहीं। अमान्य चार कहते हैं। साइट नीचे है joymon.github.io/joyful-visualstudio
जोय जॉर्ज Kunjikkuru

4

आप अपने README.md को रेंडर करने के लिए DocumentUp का उपयोग कर सकते हैं ।


3

मेरे पास आपके प्रलेखन स्थल और मुख्य गितुब रेपो के बीच एक एकल रीडमी फ़ाइल साझा करने के लिए कुछ विचार हैं:

  1. आप केवल एक gh-pages ब्रांच का उपयोग कर सकते हैं जिसमें आपका कोड और jekyll प्रलेखन साइट दोनों शामिल हैं। आपकी रिपॉजिटरी थोड़ी अव्यवस्थित हो सकती है और आपको रीडमी के शीर्ष पर एक YAML हेडर लगाने की आवश्यकता होगी। यह सापेक्ष जोड़ने का लगभग समर्थन करता है। समस्या यह है कि यदि आप अपने मार्कडाउन को रेंडर करने के लिए जेकिल चाहते हैं तो यह एक .html एक्सटेंशन देगा। हो सकता है कि इसे कॉन्फ़िगर करने का एक तरीका हो। यहाँ एक उदाहरण है कि मैंने यह देखने के लिए एक साथ फेंक दिया कि क्या यह काम करता है।

  2. आप अपनी मुख्य शाखा से रीडमी पढ़ने के लिए अपनी प्रलेखन साइट में AJAX कॉल का उपयोग कर सकते हैं और फिर इसे जावास्क्रिप्ट मार्कडेंडर रेंडरर के साथ प्रस्तुत कर सकते हैं । यह लोड होने में थोड़ा अधिक समय लेगा और यह आपको कुछ चालाक जावास्क्रिप्ट लिखने के बिना रिश्तेदार लिंक का समर्थन नहीं करेगा। यह विचार 1 की तुलना में लागू करने के लिए भी अधिक काम है।


3

विचार करने के लिए एक अन्य मार्ग पूर्व-पूर्व हुक स्थापित कर रहा है जो प्रासंगिक पृष्ठों का निर्माण करता है। मैं अपने रिपॉजिटरी में से एक में ऐसा करता हूं । आपको शायद स्वचालित पेज जनरेटर को खोदना होगा और बस gh-pagesशाखा को अपने आप को धकेलना होगा , हालांकि, साथ ही साथ अपने डॉक्स को HTML या जेकेल साइट में बदलने के लिए कुछ कल्पना करना चाहिए जैसा कि नाथन का सुझाव है

कि भंडार में इस तरह मैं धक्का रखने के लिए gh-pagesके समान master। ऐसा करने के लिए बहुत सारे अन्य तरीके भी हैं। हालांकि यह आपकी स्थिति के लिए आदर्श नहीं हो सकता है (आप नहीं चाहते कि वे समान हों)।

वैसे भी, इस सवाल पर मैंने एक इनाम की पेशकश की थी क्योंकि मैं उम्मीद कर रहा था कि किसी को बेहतर वर्कफ़्लो था। यह विधि एक तरह से दृढ़ और अनम्य है और सभी को अपने हुक को सिंक में रखने की आवश्यकता होती है।


2

एचटीएमएल को रेंडर करने के लिए गिथब एपीआई और एक जावास्क्रिप्ट मार्कडाउन इंजन का उपयोग करते हुए डॉक्स लाने के लिए अजाक्स का उपयोग करने के लिए एक और तरीका जो मैंने बहुत सफलतापूर्वक काम किया है (जैसा कि नाथन द्वारा भी सुझाया गया है)।

  1. Github से Doc लाने के लिए Github API और JSONP का उपयोग करें
  2. बेस 64 सामग्री को जीथब एपीआई से प्रतिक्रिया में डिकोड करें
  3. जावास्क्रिप्ट मार्कडाउन इंजन का उपयोग करके मार्कडाउन रेंडर करें
  4. प्रस्तुत HTML प्रदर्शित करें

नाथन ने प्रदर्शन पर कुछ चिंता व्यक्त की लेकिन मेरे अनुभव में, यह तुरंत लगता है इसलिए मुझे नहीं लगता कि यह वास्तव में एक समस्या है।

इसका फायदा यह है कि इसे सेटअप करना आसान है और यह आपके डॉक्स को हमेशा अपडेट करेगा भले ही आप मार्कड को सीधे जीथब पर ब्राउजर में एडिट कर दें।

मैंने इसे दिखाने के लिए http://bradrhodes.github.io/GithubDocSync/ पर Github पृष्ठों पर एक उदाहरण स्थापित किया ।


मैंने अपनी परियोजना को दिखाने के लिए क्लोनिंग के साथ विधि को जोड़ा । GitHub पृष्ठों में विकि
चेतबाहन

2

नाथन और ब्रांड रोड्स द्वारा वर्णित विधि के लिए एक और संभावना एक महान उपकरण का उपयोग करना है: रिको स्टा द्वारा बनाई गई फ्लैटडॉक । क्रूज़।

FlatDoc ajax दस्‍तावेज़ (README.md या कोई अन्‍य मार्कडाउन फ़ाइल) द्वारा लोड होगा, इसे पार्स करें और सभी उपहारों और यहां तक ​​कि नेविगेशन के लिए एक साइडबार मेनू के साथ प्रदर्शित करें!

इसने अपने एपीआई में गितहब रेपो मास्टर (लेकिन वेब से कहीं और भी लोड कर सकते हैं) से फाइल लोड करने के लिए एक सहायक विधि का निर्माण किया है।

अनुदेश

निम्नलिखित html टेम्पलेट को अपने gh-pages शाखा में अपने index.html में कॉपी करने के साथ शुरू करें । जारी रखें:

  • अपने उपयोगकर्ता नाम के साथ "USER" को प्रतिस्थापित करना
  • अपने GitHub रेपो नाम के साथ "REPO" की जगह
  • अपने प्रोजेक्ट के नाम के साथ "योर प्रोजेक्ट" की जगह

फ़ाइल में। इसे अपने ब्राउज़र में स्थानीय रूप से आज़माएं। फिर परिवर्तनों को प्रतिबद्ध और धक्का दें। अब आपका github पेज आपके मास्टर ब्रांच में आपकी README.md फाइल से अपडेट हो जाएगा।

यदि डिफ़ॉल्ट थीम आपके लिए संतोषजनक नहीं है, तो आप इसे अपने स्वयं के सीएसएस से री-स्टाइल कर सकते हैं।


1

मैं डॉक्स को मास्टर में संपादित करना चाहता हूं और जीएच-पेज में प्रकाशित करना चाहता हूं - मुझे डॉक्स को स्रोत कोड के साथ अद्यतित रखना पसंद है और यह सबसे अच्छा तरीका लगता है। यह मेरे लिए प्रगति पर काम कर रहा है, लेकिन मैंने कोरी की पटकथा को एक प्रारंभिक बिंदु के रूप में लिया और इसे थोड़ा विस्तार दिया ताकि यह बॉक्स से बाहर काम कर सके जब तक कि जीएच-पेज की शाखा है _layouts(यानी एक जेकल साइट)। यह बैकटिक स्टाइल फेंसिंग (कोड ब्लॉक के लिए) को रूपांतरित करता है जो जीथब सोर्स ब्राउजिंग में अच्छी तरह से काम करता है, लेकिन जीएच-पेज में नहीं। मैं index.mdप्रोजेक्ट के लिए एक शामिल के साथ उपयोग करता README.mdहूं ताकि मैं एक हेडर और कुछ अन्य सजावट जोड़ सकूं। यह संस्करण "डॉक्स" नामक किसी भी नेस्टेड निर्देशिका में दस्तावेज़ीकरण भी संभालता है, जिसे मैं कई मॉड्यूल वाले प्रोजेक्ट में उपयोगी पाता हूं (गिट उपमॉडल नहीं, बस उपनिर्देशिका):

.git/hooks/post-commit

#!/bin/bash
###
### The following block runs after commit to "master" branch
###
if [ `git rev-parse --abbrev-ref HEAD` == "master" ]; then

    # function to convert a plain .md file to one that renders nicely in gh-pages
    function convert {
        # sed - convert links with *.md to *.html (assumed relative links in local pages)
        # awk - convert backtick fencing to highlights (script from bottom of file)
        sed -e 's/(\(.*\)\.md)/(\1.html)/g' "$1" | awk -f <(sed -e '0,/^#!.*awk/d' $0) > _temp && mv _temp "$1"
    } 

    if ! git show-ref --verify --quiet refs/heads/gh-pages; then
        echo "No gh-pages, so not syncing"
        exit 0
    fi

    # Switch to gh-pages branch to sync it with master
    ###################################################################
    git checkout gh-pages

    mkdir -p _includes

    # Sync the README.md in master to index.md adding jekyll header
    ###################################################################
    git checkout master -- README.md
    if [ -f README.md ]; then
        cp README.md _includes/
        convert _includes/README.md
        git add README.md
        git add _includes/README.md
    fi

    # Generate index if there isn't one already
    ###################################################################
    if [ ! -f index.md ]; then
        echo -e '---\ntitle: Docs\nlayout: default\n---\n\n{% include README.md %}' > index.md
        git add index.md
    fi

    # Generate a header if there isn't one already
    ###################################################################
    if [ ! -f _includes/header.txt ]; then
        echo -e '---\ntitle: Docs\nlayout: default\nhome: \n---\n\n' > _includes/header.txt
        git add _includes/header.txt
    fi

    # Sync the markdown files in all docs/* directories
    ###################################################################
    for file in `git ls-tree -r --name-only master | grep 'docs/.*\.md'`
    do
        git checkout master -- "$file"
        dir=`echo ${file%/*} | sed -e "s,[^/]*,..,g"`
        cat _includes/header.txt | sed -e "s,^home: .*$,home: ${dir}/," > _temp
        cat "$file" >> _temp && mv _temp "$file"
        convert "$file"
        git add "$file"
    done

    git commit -a -m "Sync docs from master branch to docs gh-pages directory"

    # Uncomment the following push if you want to auto push to
    # the gh-pages branch whenever you commit to master locally.
    # This is a little extreme. Use with care!
    ###################################################################
    # git push origin gh-pages

    # Finally, switch back to the master branch and exit block
    git checkout master
fi

exit $?

#!/usr/bin/awk
{
   # Replace backtick fencing (renders well when browsing github) with jekyll directives
   if (/```/) {
      IN = IN?0:1 # Are we already in a fenced section? Toggle.
      if (IN) { # If we are starting a fenced section
         if (/```\s*$/) {
           $0 = $0"text" # empty language is OK for backticks but not for jekyll
         }
         gsub(/```/, "{% highlight ")
         print $0" %}"
      } else { # ending a fenced section
        print "{% endhighlight %}" 
      }
    } else { # not a fencing line
      if (IN) { # but in a fenced section, so add indent to make sure code is rendered with <pre>
        print "    "$0
      } else {
        print
      }
    }
}

मूल से एक और भिन्नता यह है कि यह page.homeसभी पृष्ठों में एक चर सेट करता है । इसका उपयोग रूट डायवर्ट्री के सापेक्ष पथ का पता लगाने के लिए किया जा सकता है, इसलिए इसका उपयोग सीएसएस जैसे स्थैतिक संसाधनों का पता लगाने के लिए किया जा सकता है। में _layouts/.default.htmlमेरे पास है:

<link rel="stylesheet" href="{{ page.home }}css/main.css">

इस तरह मैं सीएसएस को संपादित कर सकता हूं, स्थानीय रूप से जेकेल साइट का निर्माण कर सकता हूं, और सर्वर पर इसे बनाने के लिए गिटहब का इंतजार किए बिना एक परिणाम में परिणाम देख सकता हूं।


0

मैंने हाल ही में इस समस्या को हल करने के लिए एक पैकेज gh-pages-generator बनाया है - यह कई एमडी फाइलों और एक कॉन्फ़िगरेशन फ़ाइल का उपयोग करके बहु-पृष्ठ साइट उत्पन्न करता है।

यह पृष्ठों के बीच के सभी लिंक को सही ढंग से अपडेट करता है। इसे g-Pages शाखा में परिवर्तन करने के लिए CI का हिस्सा बनाना अपेक्षाकृत आसान है।

मैं इसे यहाँ और यहाँ उपयोग कर रहा हूँ ।


0

यह मुश्किल नहीं है , दो कॉपी और टर्मिनल में चिपकाए गए हैं और आप सभी सेट हैं।

Jekyllआपको अपनी मार्कडाउन फ़ाइल आयात करने की अनुमति देता है, और फिर उन्हें HTML में परिवर्तित करने का ध्यान रखेगा। चाल के साथ README.mdअपनी index.mdफ़ाइल में अपने आयात करने के लिए है {% include_relative README.md %}। यहाँ है कि हम ऐसा कैसे कर सकते हैं:

यह जाँचने के लायक है कि गिटहब Jekyllपर सुपर नंगेबोन साइट को कैसे सेटअप किया जाए (यह सिर्फ दो फाइलें हैं! )

स्थापित करना

आप दो फ़ाइलों को कॉपी कर सकते हैं और आपके पेज को आपके वर्तमान रीडमी के साथ जा रहा है बस इस एक बार सेटअप को चलाकर ( पूरे कोड ब्लॉक को कॉपी करें और टर्मिनल में पेस करें ):

# Copy our two files to the gh-pages branch
git checkout -b gh-pages &&
wget https://raw.githubusercontent.com/lazamar/barebones-jekyll-project-readme/master/_config.yml &&
wget https://raw.githubusercontent.com/lazamar/barebones-jekyll-project-readme/master/index.md &&
#
# Commit and publish our page on github
git add -A && git commit -m "Create project github page" &&
git push --set-upstream origin gh-pages |
#
git checkout master # go back to master branch

स्वचालित

तो फिर हम सिर्फ से सभी परिवर्तनों को कॉपी करने का कार्य स्वचालित करने के लिए की जरूरत masterके लिए gh-pagesहर धक्का से पहले शाखा। हम इस स्क्रिप्ट को चलाकर ऐसा कर सकते हैं ( आप इसे टर्मिनल में कॉपी और पेस्ट कर सकते हैं )

$(cat > .git/hooks/pre-push << EOF
#!/bin/sh
we_are_in_gh_pages="\$(git branch | grep -G "* gh-pages")"

if [ ! "\$we_are_in_gh_pages" ];
  then
    git checkout gh-pages &&
    git rebase master &&
    git push -f &&
    git checkout master # go back to master branch
fi
EOF
) && chmod 775 .git/hooks/pre-push

यह एक पुश हुक बनाएगा जो आपके द्वारा चलाए masterजाने वाले gh-pagesहर समय शाखा से सभी परिवर्तनों को कॉपी करेगा git push

बस। किया हुआ।

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