2012-10-24 8 views
6

Właśnie przejąłem stanowisko programistyczne dla firmy, która zarządza wieloma różnymi witrynami. Istnieje kilka różnych "projektów" witryny, a dla każdego projektu istnieje kilka wersji tego samego typu typu "cookie cutter". Są to różne witryny, ale ramy są tak bliskie, że skoro tylko treść i niektóre style zmieniają się, poprzedni facet właśnie kopiował je do konkretnych hostów.Wiele podobnych stron z GIT? Lub jakiejś innej kontroli wersji?

Więc moje pytanie brzmi, czy Git jest właściwą rzeczą do tego? Użyłem git trochę na własnych projektach, ale mówimy o setkach stron (około 10 na projekt) do tego zadania. Czy paczka gałęzi będzie dobrym sposobem na odejście? Głównie, co mogę zrobić, to szybko i łatwo zaktualizować wspólne pliki. Poprzedni facet używał skryptu perl, aby przenieść rzeczy w celu "aktualizacji" witryn po dokonaniu globalnej zmiany. Wygląda na to, że byłby o wiele bardziej głupi i kontrolowany (w wersji kontrolowanej) z git.

Subwersja była moją kolejną myślą, ale nie mam dostępu do instalacji na wszystkich serwerach. Większość plików jest przesyłanych za pośrednictwem ftp, ale z pewną dozą pewności, prawdopodobnie mógłbym otrzymać ssh (prawdopodobnie też skonfigurowałem go z bezpiecznikiem dla sshfs).

Jakieś myśli? Lub jeśli mam zamiar o tym całkowicie nie tak, daj mi znać, również. Nigdy wcześniej nie miałem do czynienia z czymś takim rozmiarem (na przykład z wieloma witrynami) i wydaje się, że jest po prostu brudny. Wiem, że jest lepszy sposób na zrobienie tego!

Dzięki!

Odpowiedz

4
  1. Oddzielne opracowanie i wdrożenie do różnych zadań (nie trzeba mieć repozytorium/lub tylko WC/na każdy produkcji)
  2. Wszelkie SCM z dobrym rozgałęzienia-przejmowanego zadziała
  3. wspólną częścią wszystkich stron (ramy) można rozdzielić (lub przynajmniej można spróbować zrobić to) w jeden podmiot powiązany z produktów końcowych (za pomocą metody SCM-specyficzny - submodules, co zewnętrzne)
6

git submodules pozostają dobrym sposobem, aby utrzymać śledzenie innego repo s, w tym:

  • jeden dla wspólnego pliku
  • jednym dla konkretnego pliku.

Oznacza to, że każda witryna jest repozytorium "nadrzędnym", które obejmuje dwa wymienione powyżej moduły.

Sztuką jest, szczególnie w przypadku modulów submodule reprezentujących wspólny plik, zadeklarowanie go na stronie internetowej jako "following the latest commits of a branch".

git submodule add -b master common url/to/common/files/repo 

W ten sposób, za każdym razem trzeba pracować na jednym z tych stronie repo, wszystko trzeba zrobić w pierwszej kolejności jest:

git submodule update --remote 

i na pewno do pracy z najnowszymi górę aktualne wspólne pliki.

Powiązane problemy