2010-03-16 17 views
23

Czy istnieje prosty sposób konfigurowania różnych plików .gitignore dla różnych pilotów? Mam repozytorium, które wysyłam do Heroku i Githuba. Potrzebuję database.yml dla Heroku, ale nie chcę, aby część informacji została przekazana do Github. Potrzebuję więc innego pliku .gitignore dla każdego z pilotów.Czy istnieje sposób na skonfigurowanie zdalnego pliku .gitignores?

Próbowałem mieć dwie oddzielne gałęzie, z których jedna ignoruje database.yml, a druga nie. Problem polega na tym, że kiedy kasuję gałąź heroku i wracam do mojej gałęzi github, cały plik database.yml zniknął.

Jakieś wskazówki?

+0

FunkyMunky, czy znalazłeś dobre rozwiązanie dla swojego problemu? –

Odpowiedz

5

Nie wiem nic o wymaganiach dla Heroku - mam nadzieję, że Sprawiedliwość ma rację i można po prostu uniknąć problemu. Jeśli nie możesz, lub jeśli ktoś inny znajdzie to, kto nie może ...

Jeśli chcesz, aby te dwa piloty były lusterkami (mają te same zatwierdzenia), muszą z definicji mieć te same pliki w tych zatwierdzeniach . Masz dwie możliwości: masz file-for-repo-B we wszystkich repozytoriach, nawet jeśli nie są potrzebne, lub używasz nieco nieuporządkowanego przepływu pracy z dwoma gałęziami: master i for-repo-B. Jedyna różnica między tymi dwoma gałęziami to commits dotykające file-for-repo-B; gałąź for-repo-B zawsze łączy się z master (ale nigdy na odwrót!). Teraz po repozytorium B masz wyodrębnioną gałąź i wszystko jest w porządku.

10

Nie umieszczaj informacji w bazie danych w pliku database.yml. Zamiast tego użyj zmiennych środowiskowych Heroku.

+0

Ta reguła dotyczy dowolnego innego środowiska produkcyjnego, a nie tylko heroku. –

1

Należy versionned a:

  • database.yml tylko ze zmiennych w nim, a
  • skrypt stanie zastąpić tych zmiennych przez właściwych wartości w zależności od serwera zdalnego jeżeli database.yml został wdrożony.

Następnie należy użyć skryptu jako smudge attribute filter driver:

smudge content filter

każdym razem będzie kasy (i utworzyć drzewo roboczy) na zdalnym serwerze, skrypt jest wykonywany i zmieni odpowiednio zmienne, co daje niestandardowy plik database.yml.
Jeśli jeden z pilotów nie potrzebuje tego pliku database.yml, nadal może tam być, ale opróżniony przez skrypt smudge.

Powiązane problemy