Kilka miesięcy temu kopałem w Subversion i GIT i byłem rozczarowany. Obsługują kod źródłowy w porządku, ale nie w innych aspektach. Na przykład witryna internetowa pod kontrolą wersji musi zarządzać własnością pliku / katalogu, dostępem do odczytu i zapisu pliku / katalogu, listami kontroli dostępu, znacznikami czasu, zawartością bazy danych. i linki zewnętrzne. Czy istnieje system kontroli wersji, który może wykonać równie doskonałą rewersję jak przeładowanie z miesięcznej kopii zapasowej?
17
Odpowiedzi:
Jesteś zdezorientowany co do roli systemu kontroli wersji. Nie jest i nigdy nie miał być systemem zapasowym dla działającej strony internetowej. Bardzo dobrze radzi sobie z zarządzaniem zawartością statyczną, aby przejść do produkcji w kontrolowany sposób. Przy prawidłowym stosowaniu tagowania i automatycznych kasach nawet szybko zmieniające się strony mogą być przechowywane w systemie kontroli wersji.
System kontroli wersji będzie w stanie powiedzieć ci, jak uzyskałeś wygląd strony w zeszłym miesiącu do tego, jak wygląda dzisiaj (przynajmniej w przypadku tych komponentów, które są pod kontrolą źródła). Powinien zawierać wszystko, czego potrzebujesz do przebudowania witryny (z wyjątkiem treści dynamicznych). Jak zauważyli inni, wszelkie zmiany w uprawnieniach i prawach własności powinny być zapisywane w skrypcie, a ten skrypt powinien być uwzględniony w kontroli wersji.
Uprawnienia dostępu do stron internetowych są zazwyczaj dość proste. (Zasadniczo musisz upewnić się, że serwer sieciowy może odczytać całą zawartość i napisać bardzo mało). Z wyjątkiem własności katalogu do kilku katalogów, które muszą być zapisywalne przez subversion serwera WWW i być może git, z pewnością mogą obsłużyć uprawnienia. Katalogi, w których serwer WWW może zapisywać, zazwyczaj zawierają treści dynamiczne (tworzone i aktualizowane ze strony internetowej), którymi zarządza się niezależnie od źródła stron internetowych.
Gdybym został poproszony o pracę z witryną o skomplikowanych uprawnieniach i listach kontroli dostępu w witrynie, miałbym poważne obawy dotyczące procesu zarządzania tą witryną. Wdrożenie systemu kontroli wersji i przeniesienie do niego list ACL byłoby jednym z rozwiązań, które poważnie rozważę.
Treści dynamiczne, takie jak wpisy na blogu lub komentarze, są zwykle zawarte w bazie danych lub innym magazynie danych, a nie w kontroli wersji używanej do tworzenia witryny. Magazyn danych może być skonfigurowany w celu zapewnienia kontroli wersji jego zawartości (podobnie jak to oprogramowanie). Wiele stron Wiki używa systemu kontroli wersji do śledzenia zmian.
EDYTOWAĆ:
Problemy te można rozwiązać, importując witrynę do systemu kontroli wersji i zmieniając proces, tak aby witryna główna była aktualizowana przez ten system. (a), (b) i (c) są obsługiwane bezpośrednio przez kontrolę wersji. Możesz oznaczyć wydania, aby (c) działało lepiej. (d) generalnie nie stanowi problemu, jeśli tylko system wdrażania zmienia witrynę. Nigdy nie potrzebowałem list ACL dla treści witryny.
(e) powinien być uruchamiany tylko przy początkowym utworzeniu i większych zmianach. Może także zawierać skrypt aktualizujący witrynę z poziomu kontroli wersji i często uruchamiany. Te skrypty są zwykle dość proste, gdy trzymasz witrynę w systemie kontroli awersji.
Ponieważ nie jest to konieczne, jeśli używasz systemu kontroli wersji.
Zarówno CVS, jak i Subversion śledzą to, co musisz śledzić, jeśli ich używasz. Nie będą śledzić rzeczy, które musisz śledzić, ponieważ nie używasz systemu kontroli wersji, nie powinni też. Śledzą to, co należy śledzić, gdy korzystasz z systemu kontroli wersji.
Pracowałem z kilkoma witrynami, które zarządzały ich zawartością za pomocą kontroli wersji. Wszystkie miały różne wymagania dotyczące witryn przemieszczania, częstotliwości wdrażania i kompletności aktualizacji. Gdy witryny były już w kontroli wersji, pozostałe wymagania były stosunkowo łatwe do spełnienia. Dokumentacja zarówno dla CVS, jak i Subversion sugeruje możliwe metody aktualizacji.
Możesz potrzebować list ACL, aby ograniczyć dostęp do określonych obszarów w treści kontrolowanej wersją. Jednak zazwyczaj pracuję na zasadzie zaufania. Kontrola wersji ułatwia sprawdzenie, kto co zrobił, kiedy. Jeśli nie sformatujesz plików, łatwo jest uzyskać historię pliku z adnotacjami pokazującą, kto dodał, które wiersze kiedy.
źródło
Wszystkie z nich i żadne z nich.
Nie jest dobrym pomysłem, aby uzyskać kontrolę źródła, aby bezpośrednio zarządzać tymi szczegółami, tak jak sugeruje to pytanie.
Możesz jednak napisać skrypt bash (* nix) lub skrypt PowerShell (Windows), który osiąga jeden lub wszystkie z tych celów. Ten skrypt może być przechowywany w kontroli źródła.
Następnie możesz uczynić ten skrypt jednym z artefaktów kompilacji i uruchomić go w ramach wdrożenia.
źródło
IMHO system kontroli wersji sam w sobie nie jest przeznaczony do użycia w ten sposób.
Ale staram się upewnić, że możesz uzyskać wersję z kontroli źródła, wystarczy uruchomić tylko jeden plik kompilacji / plik PowerShell, a wszystko będzie działać ponownie.
W tym celu musisz:
źródło
Wierzę, że w twoim przypadku potrzebujesz narzędzia do zarządzania konfiguracją . Ten, którego użyłem, jest marionetką .
Cytując cię:
Zrobiłem to za pomocą jednej linii (upewnij się, że użytkownik istnieje, upewnij się, że istnieje katalog itp.) ...
Jeśli jest to Windows ACL, to istnieją specjalne narzędzia CM dla Windows ...
ponownie polecenie touch unix w jednym wierszu skryptu lalek może to zrobić za Ciebie.
To jest wbudowane w wiele frameworków, zadanie cron, które zapewnia, że wszystko jest tam inaczej?
Nic o tym nie wiem.
Oczywiście po napisaniu kodu zarządzania konfiguracją możesz chcieć umieścić go (lub pobrać w odpowiednich systemach) w systemie kontroli wersji. Nie uciekniesz od nich :-).
źródło
Istnieje najlepszy system kontroli wersji, który zarządza wszystkimi aspektami wszystkich dokumentów cyfrowych. Nazywa się Xanadu i został stworzony przez Theodora Holma Nelsona w 1960 roku, jeszcze zanim systemy takie stały się popularne. Teoretycznie wszystko jest doskonale rozwiązane. W praktyce Xanadu nigdy nie został wdrożony zgodnie z przewidywaniami Nelsona, ale zainspirował wiele bardziej wyspecjalizowanych systemów, w tym sieć i systemy kontroli wersji. Prace Nelsona są nadal warte nowej lektury - i mogą odpowiedzieć na pytanie, dlaczego nie ma ogólnego VCS, który zarządzałby wszystkimi aspektami.
źródło