2012-12-17 12 views
7

Co chcę zrobić: Używam github. Mam dwie gałęzie. Strony master i gh. Mam projekt unity3d na moim głównym oddziale. Po uruchomieniu generuje stronę internetową. Chcę wyświetlić zawartość strony na gałęzi gh-pages.Wbuduj gałąź gh z gałęzi master

Zakładam, że oznacza to, że muszę udostępnić folder między dwoma gałęziami mojego repozytorium. To wydaje się prawie niemożliwe.

Czy jest to właściwy sposób? Moje obecne rozwiązanie polega na tworzeniu dwóch projektów Github i budowaniu od pierwszego do drugiego. Następnie przeglądam stronę gh na sekundę. To wydaje się bardzo ... obce. Byłbym w stanie zrobić to wszystko za pomocą jednego projektu.

+0

O.o to bardzo dziwna sytuacja ... Zajmę się stronami internetowymi w innej branży niż te 2. –

+0

Nie spodziewam się, że robię to zbyt długo. Prędzej czy później gra otrzyma własną stronę internetową, ale na razie możliwość uderzenia w build/commit i sprawić, że będzie to gospodarz bez żadnych innych zabawnych interesów, byłoby cudowne. – tavoe

+0

Oto coś, co działa: "git checkout master WebPlayer/WebPlayer.unity3d". Uruchom go ze strony gh, a pobierze odtwarzacz internetowy. Czy mogę zautomatyzować gita, aby uruchomić ten skrypt tuż przed zatwierdzeniem strony gh, za każdym razem? – tavoe

Odpowiedz

1

Jest to podobne do obiegu pracy Jekyll. Powiedzmy, że treść unity3d jest generowana w folderze o nazwie foo. Dodaj foo do .gitignore następnie zrobić to

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

Example

9

Można po prostu sklonować repozytorium ponownie wewnątrz swojej struktury katalogów roboczego pierwszego repozytorium. Tak lokalnie, trzeba tę strukturę folderu:

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

Zarówno project i deploy klonuje repozytoriów projektu; deploy ma wyewidencjonowany oddział gh-pages. Zewnętrzny .gitignore oczywiście zawiera listę deploy/, więc folder jest ignorowany dla projektu.

Teraz, podczas wdrażania, publikowania wszystkich plików do folderu deploy, a następnie przejdź do niego, zrobić git add ., git commit, git push a wygenerowany pliki są rozmieszczone.

Oczywiście nie da to rzeczywistej relacji między gałęzią główną a gałęzią stron gh, ale obie będą całkowicie niezależne od siebie w tym samym repozytorium.

+0

Jest to omówione w [dość popularnej osobie] (https://gist.github.com/chrisjacob/825950). –

0

Chciałem przesłać moje dokumenty doxgen od wzorca na strony gh "łatwo".

Czytam podobne rozwiązania i moje oczy są oszklone.

Moje rozwiązanie było:

  1. źródło oddział: czy złoży .gitignore liście "katalog tymczasowy"
  2. zmiana gałęzie do GH-strony (która zachowuje wymieniony katalog .gitignore)
  3. gh -pages Branża: rsync z katalogu tymczasowego do właściwego katalogu
  4. GH-pages oddział: 'git dodać -u' właściwego katalogu lokalizacji
  5. GH-stron Branża: 'git commit'

To nadal wymaga ręcznego uruchomienia aktualizacji i zatwierdzenia, co może być dobrą rzeczą, jeśli publikujesz na stronie tylko z konkretnych kompilacji.

Przykład (głównie komentarze) na: https://github.com/nekenyu/libBsdSockets/blob/gh-pages/update_doc.sh

1

Sprawdź fantastycznie niesamowite modułu gh-pages npm. Za pomocą kilku linijek kodu, np

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

Będziesz utworzyć oddział GH-stron i wcisnąć go do GitHub!

Mówiąc bardziej szczegółowo, z docs:

Wywołanie tej funkcji spowoduje utworzenie tymczasowego klona obecnego repozytorium, należy utworzyć gh-pages oddziału, jeśli nie istnieje, skopiować wszystkie pliki z bazy ścieżkę lub tylko te, które pasują do wzorców z opcjonalnej konfiguracji src, zatwierdzają wszystkie zmiany i przesyłają do pilota zdalnego sterowania origin.

Jest super konfigurowalny i działa jak urok dla mnie.

Powiązane problemy