W ciągu ostatnich kilku lat pracowałem z kilkoma różnymi systemami kontroli wersji. Dla mnie jedną z podstawowych różnic między nimi było to, czy wersjonują pliki indywidualnie (każdy plik ma osobną numerację wersji i historię), czy też repozytorium jako całość („zatwierdzenie” lub wersja reprezentuje migawkę całego repozytorium) .
Niektóre systemy kontroli wersji „na plik”:
- CVS
- ClearCase
- Visual SourceSafe
Niektóre systemy kontroli wersji „całe repozytorium”:
- SVN
- Git
- Bystry
Z mojego doświadczenia wynika, że systemy kontroli wersji poszczególnych plików doprowadziły tylko do problemów i wymagają poprawnej konfiguracji i konserwacji, aby poprawnie korzystać (na przykład „specyfikacje konfiguracji” w ClearCase). Miałem wiele przypadków, gdy współpracownik zmieniał niepowiązany plik i łamał coś, co idealnie byłoby izolowaną linią rozwoju.
Jakie są zalety tych systemów kontroli wersji dla poszczególnych plików? Jakie problemy mają systemy kontroli wersji „całe repozytorium”, których nie mają systemy kontroli wersji dla poszczególnych plików?
źródło
Odpowiedzi:
Z mojego doświadczenia wynika, że nie ma: VCS „całe repozytorium” ściśle dominuje VCS „na plik”.
źródło
Zaletą dla jednego pliku jest budowanie linii produktów (wielu produktów oprogramowania) z tego samego repozytorium.
Niektóre środowiska zawierania umów z klientami wymagają dowodów, że ich upuszczenie kodu zawiera TYLKO żądane zmiany, a nie inne zmiany. Jest to dość łatwe, jeśli numery wersji plików są wciąż takie same.
I to nie jest przypadkowy przykład, który wyciągnąłem z cienkiego powietrza.
Stało się tak, kiedy ostatni raz wysyłałem aktualizacje oprogramowania do armii amerykańskiej dla systemu, który kupili od mojej poprzedniej pracodawcy. Wartość kontraktów wyrażona w dolarach mierzona była w ułamkach miliardów dolarów (w przeszłości, gdy dolary amerykańskie były warte znacznie więcej)
Czasami to pomaga.
Dziwne: tam, gdzie teraz pracuję, wysyłamy każdemu klientowi również inny produkt ... (I nie zdecydowałem, na wypadek, gdybyś się zastanawiał).
Podejrzewam, że jest to o wiele bardziej powszechne w przestrzeni obronnej / kosmicznej niż w aplikacjach termokurczliwych lub aplikacjach internetowych.
źródło
git
może nawet rozróżniać autora i osobę odpowiedzialną, dzięki czemu można przechowywać repozytorium „kontrolowane”, w którym wiadomo zarówno, kto utworzył łatkę (autor), jak i kto ją skontrolował (osoba odpowiedzialna). Podaj nam przykładową sytuację, a odwrócę moje -1.Nie ma żadnej przewagi nad wersjonowaniem poszczególnych plików.
Z drugiej strony, wady są obfite i oczywiste.
źródło
Mógłbym powiedzieć, że systemy kontroli wersji „na plik” nie mają żadnych wyraźnych zalet poza implementacją VCS. Kodery VCS chętnie kodują, gdy jest to wersja „na plik”. Zgadzam się z tym, że wyszło to historycznie.
źródło
W przypadku powiązanych plików nie ma przewagi w podejściu do poszczególnych plików. Co jest najczęstszym przypadkiem w ustawieniach programistycznych.
W kilku szczególnych przypadkach - / etc lub. pliki w twoim katalogu domowym w Uniksie są jedynymi, które mam rutynowo - zajmujesz się (głównie) niepowiązanymi plikami. A potem posiadanie systemu, który nalega na synchronizację niepowiązanych zmian, może być uciążliwe.
źródło