Pobočky v CVS


Original: http://www.astro.princeton.edu/~rhl/cvs-branches.html

Co je to pobočka?
CVS je schopen zvládnout pobočky, sbírky revizí, které z nějakého důvodu by neměla být spáchány na poštovní kufru rozvoje. Například, když jsem chtěl zkusit experiment, a byl si jistý, že to bude fungovat, tak bych nechtěl podívat do hlavní linie, jak by to mohlo dobře fungovat. Mohl bych na něm budou pracovat tajně, nikdy kontrolovat všechny soubory do úložiště — ale pak bych přijít o všechny výhody s CVS. Nebo bych mohl pracovat na svém vlastním oboru, aniž by byla narušena někoho jiného.

Původní sada verzí, než pobočka byla vytvořena, se nazývá hlavní linii nebo hlavní pobočku. To je to, co dostanete, když budete jednoduše říci cvs spolupráce my_prog. Po větev je vytvořena hlavní linka je stále výchozí verze. Pokud budete mít speciální bolesti sloučit změny z větve do hlavní linie nebo naopak, budou změny, které provedete na větvi nikdy neobjeví na hlavní trati, a naopak.

Například, když jsme snížili verzi fotografii, přinést do Fermilab pro integraci, dáme na větvi. Pokud se v následujících měsících byly některé hrozné chyba objevena v řezu verzi bez pobočky budeme mít dvě možnosti: buď snížit novou verzi (založený na cokoliv, co jsme udělal od posledního řezu verzi) se všemi problémy attendent a riziko chyb, nebo jinde zeptat uživatelům fotografie k boji na práci kolem problému. S pobočkou máme jinou volbu: můžeme opravit chybu na větvi a snížit novou verzi založenou na větvi. Protože jediná změna provedena fotografie od poslední verze je oprava, jsou minimalizovány běžné starosti a čerstvé chyby spojené s nově snížit verzi.

Vytváření větví

Vytvoření pobočky je snadné, ale je to také snadné dělat špatně. Základním bodem na paměti, že CVS pomocí značek (symbolická jména, obvykle používané pro pojmenování řez verzí) dvěma odlišnými způsoby na pobočkách, a to jak na název oboru a jméno revize na větvi.

Nejjednodušší způsob, jak vytvořit větev s názvem branchname je CD-ROM na kopii kódu, který chcete rozdělit, řekněme my_prog, a řekl:

cvs tag branchname_0
cvs tag-r branchname_0-b branchname

které křestní jména pobočkou místě připevnění (branchname_0), a pak vlastně vytváří pobočku. Je to asi dobrý nápad aktualizovat nejprve zkontrolovat, zda vaše verze je opravdu up-to-date, já obvykle říkají cvs-nq update. Nyní jste připraveni vyzkoušet kopii vašeho oboru.

Chcete-li původní verzi my_prog pobývat na nové větvi (tj. verze, která jste spustili Taq příkaz), nyní říkají,

cvs update-r branchname

Pokud byste raději zachovat kopii hlavní linky, stejně jako nové pobočky, jít do nějakého adresáře, který nemá hlavní linku odhlásil v něm, a říkají,

cvs co-r branchname my_prog

Po jedné z těchto posledních dvou odstavců, budou všechny další činnosti, které děláte na rozvětvené kopii my_prog automaticky spáchán na větvi. Můžete získat velmi zmatená, pokud jste zapomněl, že vaše soubory byly `otráven” podle oboru tagu — viz kapitola lepkavé tagy podrobnosti.

Zeptejme cvs co ví o nějakém souboru v tomto oboru, a to jak větev jméno a bod připojení jsou viditelné jméno:

> Cvs log my_prog / rhl.c

symbolická jména:
branchname_0: 1.15
branchname: 1.15.0.2
v1_2: 1.9
V1_0: 1.1

Všimněte si, že název odkazuje na branchname_0 revizi 1,15, která je před pobočka byla provedena (větve na revizi mají jména jako 1.15.2.1, vidět sekci na pobočkách čísel pro diskuzi).
Kontrola věcí na větev
Pokud je soubor již na větvi (tj. už má lepkavou sadu tagů), nemusíte dělat nic zvláštního, bude jen pravidelné cvs ci souboru zavázat, že do oboru. Pokud jste změnili soubor, který není na větvi, můžete zavázat, že do větve

cvs ci-r branchname soubor

Soubor bude mít lepkavý značku setu po této operaci, která je cvs bude zacházet tak, jako by to na větvi, i když zbytek adresáře je stále na hlavní trati. (Můžete použít cvs update-se dostat zpět na hlavní trati, ale pak budou vaše změny zmizet. Viz část sloučení způsoby, jak dostat své změny na obou hlavní linii a oboru, jak je často žádoucí) .

Kvůli chybě v CVS 1.3 (na které je v současné době sídlí rcvs), pokud přidáte nový soubor v adresáři odhlásil na pobočce, soubor se zobrazí na hlavním řádku, ne na Vaší pobočce. Námitka scriptor.

Co je Sticky Tag?
Když začnete používat větve, co nazývá lepkavé tagy začne být připojena k souborům. Můžete vidět pomocí příkazu cvs status. Například:

> Cvs status my_prog / rhl.c
================================================== =================
Soubor: rhl.c. Stav: Up-to-date

Verze: 1.15.2.1 Po 12.prosinec 1994 12:05:04
RCS Verze: 1.15.2.1 / u / cvs / src / my_prog / rhl.c
Sticky Tag: branchname (revize: 1.15.2.1)
Sticky Date: (none)
Důležité možnosti: (none)

Tagy sami by měli být obeznámeni — jsou prostě to, co nazývá cvs jména, že vzhledem k revizím, které obvykle prolínají verze a lepkavé tagy jsou v podstatě odpovídající jména daná odvětví. Nazývají se lepkavý, protože zůstat připojený k souboru, jakmile má soubor tag přilepená k tomu, všechny budoucí životopisy příkazy vztahující se k dané souboru odkazovat na větve spíše než k hlavní linii vývoje.

Například, pokud byste zkontrolovat v rámci revize na větvi branchname s příkazem cvs ci-r branchname rhl.c a pak někdo přidá některé posměšné poznámky na hlavní větvi (tj. nezadáte značku s-r), pokud vydat příkaz cvs aktualizace rhl.c neuvidíte změny. Ty bych si říct, cvs update-rhl.c vidět,-flag říká cvs ignorovat lepkavé tagy (a další atributy lepkavé — viz manuál cvs pro podrobnosti). Po použití-A kódu již není na větvi, a aktualizace již nebude aktualizovat adresář se změnami pobočky.
Sloučení změn z větve do hlavní linky
Můžete použít CO nebo aktualizace s-j, například ke sloučení všech změn provedených na větvi branchname do hlavní řady, měli byste najít nějaký adresář, který neměl my_prog odhlásil, a řekl:

cvs co-j branchname my_prog

(Můžete použít aktualizaci místo).

Hned další věc, kterou musíte udělat, je označit pobočku — pokud ne, budete nikdy být schopen sloučit větev do hlavního řádku bez skřípění zubů. Takže to:

cvs rtag-r branchname branchname_1 my_prog

(Čte, “ dát jméno branchname_1 na horní větve branchname”).

Pokud někdy chcete sloučit z větve znovu, když řeknete:

cvs co-j branchname my_prog

budete mít spoustu konfliktů sloučení, protože cvs se pokusí o sloučení změn provedených před branchname_1 podruhé. Co chcete říct, je:

cvs co-j-j branchname_1 branchname my_prog

Jako alternativu, můžete cd hlavní linie, a říkají

cvs update-j-j branchname_1 branchname

Poté, co jeden z těchto příkazů můžete samozřejmě okamžitě zadali:

cvs rtag-r branchname branchname_2 my_prog

tak, aby mohli pokračovat sloučení, pokud se objeví více chyb v budoucnosti.

Pokud nyní řekl cvs log, výstup je pojednáno v kapitole o pobočkách čísel.
Význam Branch čísel
Nikdy byste neměli vědět, ale jen v případě, že ano, tady to je. Když říkáte, že cvs log dostanete seznam poboček čísel jak tvrdí RCS, CVS program, který používá skutečně spravovat soubory. Jsou čísla, jako je 1,15 nebo 1.15.0.2. Někdy pomáhá, aby mohli interpretovat při jednání s větvemi.

Na konci této části na sloučení se výstup log cvs vypadat jako:

> Cvs log my_prog / rhl.c

symbolická jména:
branchname_2: 1.15.2.2
branchname_1: 1.15.2.1
branchname_0: 1.15
branchname: 1.15.0.2
v1_2: 1.9
V1_0: 1.1

Revize na hlavní trati mají názvy jako 1,9, což znamená, 9. revize, protože byl soubor vytvořen. RCS zvládne telefonní čísla, např. 2,13, ale nikdy cvs žádá, aby se (i když byste mohli požádat cvs požádat RCS dělat tak by tu nemělo smysl). Všimněte si, že branchname_0 je na hlavní trati, to není nečekané, protože byl označen před provedením jakýchkoli změn byly spáchány na pobočku.

Pobočka tag branchname má číslo RCS formy 1.15.0.2, .0.2 je cvs magie, ale znamená to, “ větev od 1,15”.

Čísla na daném oboru jsou 1.15.2.1 a 1.15.2.2 pro první a druhé změn na větvi. Všimněte si, že nejsou 1.15.0.3, jak jste mohli očekávat, více cvs magie.

Pokud rozvětvené větve (které byste mohli dělat, pokud jste byli opravdu masochista) byste si čísla verze jako 1.15.2.3.0.2 na větve (větev?) A 1.15.2.3.2.1 za první změny zavazuje větev.