2012-06-22 14 views
5

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:

  1. Mamy szereg dyskretnych zastosowań. Nazwijmy te AppA, AppB i AppC.
  2. Mamy również pewne pliki (skrypty budowania itp.), Które są wspólne dla wszystkich projektów. Nazwijmy to Narzędzia.
  3. Dla każdego danego fragmentu kodu AppA, AppB lub AppC potrzebujemy określonego fragmentu kodu Narzędzia.
  4. 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.

Odpowiedz

4

Najpierw należy zrozumieć różnicę między konfiguracją (podobną do UCM) w ClearCase i git (patrz "Flexible vs static branching (GIT vs Clearcase/Accurev)").
Podczas przeglądania differences between ClearCase and Git, każdy komponent UCM musi być reprezentowany w Git jako repozytorium.

Submodules wymaga dodatkowego kroku po modyfikacji, jak opisano w "true nature of submodules".
Ale nagrywają określony SHA1, który jest tym, co chcesz, gdy pociągasz każdy "APP".
gitslave pozwoliłoby ci zachować ściślejsze powiązanie Tools z "Appx", ale nie sądzę, żeby pasowało do twojego scenariusza.

pamiętać, że korzystanie Submoduły będzie:

  • Make Tools "sub-katalog 'APPx'
  • uczynić go modyfikować.
    Nie ma komponentu "tylko do odczytu" z git: jeśli masz dostęp do repo, możesz naciskać/ciągnąć.
    Jeśli naprawdę chcesz wymusić dostęp do odczytu, musisz dodać dodatkową "warstwę autoryzacji" o nazwie gitolite.
Powiązane problemy