Moja firma jest w trakcie zmiany naszego narzędzia kontroli wersji z Rational ClearCase na Git. Mamy następujący scenariusz rozwoju i jesteśmy ciekawi, czy istnieje odpowiedni wzór do naśladowania z Git, aby osiągnąć takie samo zachowanie, jakie mamy w ClearCase.Jaki jest odpowiednik w Git dla komponentu tylko do odczytu w ClearCase?
Oto kilka podstawowych punktów o naszej sytuacji:
- Mamy szereg dyskretnych zastosowań. Nazwijmy te AppA, AppB i AppC.
- Mamy również pewne pliki (skrypty budowania itp.), Które są wspólne dla wszystkich projektów. Nazwijmy to Narzędzia.
- Dla każdego danego fragmentu kodu AppA, AppB lub AppC potrzebujemy określonego fragmentu kodu Narzędzia.
- Większość naszych programistów nigdy nie modyfikuje kodu Narzędzia.
Dla ClearCase, mamy modelowane to tak:
składniki: app_a, app_b, app_c, narzędzia
projekty: Appa, AppB, appc, Narzędzia
Aplikacja Project AppA zawiera app_a jako składnik do odczytu/zapisu i narzędzia jako komponent tylko do odczytu.
Projekt AppB obejmuje app_b jako składnik do odczytu/zapisu i narzędzia jako komponent tylko do odczytu.
Projekt AppC obejmuje app_c jako składnik do odczytu/zapisu i narzędzia jako komponent tylko do odczytu.
Narzędzia projektu zawierają narzędzia jako komponent do odczytu/zapisu.
Każda linia bazowa dla projektów aplikacji * odnosi się do linii bazowej zarówno dla app_ *, jak i dla narzędzi. Gdy programiści rebase do zalecanej linii bazowej, pobierają zmiany z zarówno składników.
Dla Git, uważamy, że submoduły mogą być najbliższe właściwej odpowiedzi. Jednak podczas przeciągania/rebase repozytorium brzmi to tak, jakby wymagał dodatkowego kroku do zaktualizowania kodu modułu. Idealnie, chcielibyśmy być transparentni. Ponadto, niekoniecznie musimy wiedzieć, co zmieniło się w module danych z punktu widzenia repozytorium macierzystego; dbamy tylko o punkt w czasie dla całego submodułu.