SORU
5 Mart 2013, Salı


Nasıl Github Pages ile belgeleri senkronize edebilir miyim?

Birlikte bir proje için birden fazla kişi var ve GitHub sayfamızda işlenen GitHub Aromalı bir fiyat indirimi bir grup README.md bir dosya var. Biz de GitHub kuruluşumuzun alt alan adı altında barındırılan GitHub Sayfalarına bir şube kurmak, ve sayfamızı oluşturduk README.md dosya Automatic Page Generator sadece yükleme kullandı. Ancak, İ README.md dosya güncelleme, proje sayfası güncelleme olmadığını fark ettim. Bunun yerine, GitHub ayarlar sekmesine gidin ve projesi sayfası, o zaman yapacağız README.md dosyayı yeniden oluşturmanız gerekir.

Ayrıca, GitHub proje dizini sayfalarında belgeleri dosyalar arasında relative linking çalışma hakkında okuduktan sonra. Ben çok tüm HTML elle Dokümantasyon için yazmak zorunda zaman ton tasarruf olarak fiyat indirimi gibi. Ancak istediğim diğer belge dosyaları docs/*.md bulunan bağlantıları eklemek mümkün olan bir README.md dosyası var edebilmek için. Diğer belgeler dosyalarımı da gh-pages şube benim dahil ve GitHub Pages benim alt alan adı altında barındırılan ve işlenecek ve/veya temalı olabilir, böylece kolay bir çözüm umuyordum.

Diğer bir deyişle, benim sorular şunlardır:

  • Bir şekilde benim README vardır.md dosya otomatik olarak Github sayfamda alt gelişme var mı?
    • [ EDİT ] :Hayır eğer Otomatik Sayfa Jeneratör kullanarak eğer cevap gibi görünüyor. Güncellemek için repo için ayarlar sayfasına gidip bir değişiklik var her zaman yeniden yüklemeniz gerekir.
  • Benim README benim belgelerine göre benim bağlantıları olabilir bir yolu yoktur.md Github sayfamı, belki de benim işe bir şekilde Github benim Sayfaları /docs/*.md benim senkronize bir şekilde oluşturma ve tema dosya?
    • [ EDİT ] :Ne öğrendim bu yana yazılı bu soruyu görünen bu sadece mümkün GitHub sayfaları arasında kullanımı static site generator gibi ruby gem Jekyll ve muhtemelen bazı kullanım webhooks supported by GitHub anlatılan aşağıya yorum. Şu anda optimal bir çözüm bulmaya çalışıyorum.
  • Daha da iyisi, orada bile daha kolay bir yolu var ve benim README sadece bir kopyası var belki yapabilirim.gh-pages ve benim ana dal hem de kullanılan ve her şeyi kolay hale getirir md ve belgeler?
    • [ EDİT ] :Bu neredeyse kesinlikle bir hayır gibi görünüyor. Bir şey GitHub yerleşik olasılığı hakkında buna izin vermeyeceğini düşünüyordum. Böyle bir şey olabilir daha iyi destek gelecekte GitHub Sayfa içine yerleştirilmiş olabilir, ya da en azından ben kesinlikle faydası olacağını umuyorum.

CEVAP
5 Mayıs 2013, Pazar


GitHub Pages Jekyll kullandığı gerçeğini yararlanır ben kurulum bir çözüm zaten Otomatik Sayfa Jeneratör kullanılarak yazılan gidiyorum.

  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 aşağıdaki metni önüne

---
layout: index
---

Ayrıca index.html dosyayı açın ve aşağıdaki değişiklikleri yapmanız gerekir:

  1. README.md dosyanıza bir fiyat indirimi işlenmiş HTML çıkarın. Bu genellikle <section> tags. Replace this HTML with the text arasında{{ içerik }}` bu bize bir jekyll olarak bu dosyayı kullanmak için izin verir. Düzeni için geçerli dosya içeriği etiketi bulunduğu yer alacak.

  2. Proje sayfa tema için CSS bulun. benim için bu aşağıdaki gibi bir satır:

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

    Bu değiştirilmesi gerekiyor

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

  3. Bu düzen içinde kullanılacak diğer varlıkları sayfası da {{ site.path }} ile öneki gerekir.

Bunu yaparak, Jekyll _layouts dizin index.html düzeninin içerik olarak bir fiyat indirimi dosyasına işlerler. Sadece README için bu işlemi otomatik hale getirmek için.md dosya, ama aynı zamanda ana dalda olabilecek diğer dokümanlar, aşağıdaki adımları atmıştım:

Dosya post-commit adlı şunlardan oluşmaktaydı:

#!/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

DÜZENLEME:README.md dosya docs/* fiyat indirimi hem de aynı düzeni dosyası kullanmak için hem de yukarıdaki betiği güncelledim. Bu daha ne daha iyi bir kurulum. Bu script .git/hooks/ dizininize gider. bash yolu olmalı.

Dosyayı aşağıdaki ile _config.yml oluşturun

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

Yukarıdaki komut da GitHub Pages sitesinde de düşünülebilecek için bu fiyat indirme dosyaları master Şubesi docs/* dizininde bulunan eşitler. Göreceli bu belgeler bağlantı gh-pages Dalı çapa .md uzantısı şerit için aşağıdaki jQuery işlevi eklerseniz çalışır. _layouts dizin index.html şu komut dosyasını ekleyebilirsiniz:

$(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]);
    });
});

DÜZENLEME:Değiştirdim yukarıdaki kod benim depoyu, bu bir hızlı ve kirli bir şekilde bunu yapmak için, ama işe yaramayacak doğru her zaman eğer ne demek istediğimi biliyorsun.. örneğin, fiyat indirme dosyası company.mdata.md olmaz işlendiği doğru. Bunu düzeltmek için daha dikkatli bir şekilde dışarı href eder, aşağıdaki komut dosyası için bu güncelleme ve bulursa kaldırır uzantısı. Ben de senaryoyu daha genel, ext değişken değiştirerek başka uzantıları kaldırmak için kullanılmak üzere izin yaptı. İşte kod:

$(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));
    });
});

Ben kurulum bir örnek olan CoryG89/docsync, repo eğer bu birlikte nasıl çalıştığını görmek isterseniz, 51**,.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • ibebrent

    ibebrent

    23 Temmuz 2007