Som začiatočník v SVN.Mám štruktúru adresárov SVN takto:
|-trunk
|-file1.php
|-file2.php
|-branches
|-branch_1
|-file1.php
|-file2.php
|-branch_2
|-file1.php
|-file2.php
V kufri mám hlavnú verziu môjhoaplikácie. Mám dve pobočky pre rôznych klientov, ktoré majú zmeny iba v niektorých súboroch. Keď nájdem nejakú základnú chybu, opravím ju v kufri. Napríklad som upravil file1.php
v trunk
adresár. Chcem aplikovať zmeny v názvoch súborov file1.php
vo všetkých odvetviach.
Som trochu zmätený. V Ovládanie verzie s Subversion Našiel som nasledujúce vysvetlenie.
Zásobník Subversion má špeciálne dizajnu. Keď skopírujete adresár, vy nemusíte sa obávať úložisko rastúce obrovské - Subversion nekopíruje žiadne údaje. Namiesto toho vytvorí nový adresár vstup, ktorý ukazuje na existujúci strom.
Takže keď som vykonal zmenu súboru trunkfile1.php
bude automaticky použitý na druhú file1.php
ako som urobil žiadne zmeny v týchto súboroch v branches
adresár.
Ako môžem použiť zmeny z telefónneho adresára na všetky pobočky? Snažil som sa používať svn merge
ako toto:
svn merge -r 31:32 http://mysvnserver.com/project/branches/branch_1
ale neurobil som žiadne zmeny (svn diff -r 31:32
vráti všetky zmeny, ktoré som vykonal.)
odpovede:
10 pre odpoveď č. 1Ak chcete použiť zmenu z kufra na pobočku_1, príkaz na zlúčenie musí určiť, kam má byť rozdiel z, a potom zadajte cieľ, na ktorý sa má zlúčenie použiť:
cd branch_1
svn merge -r 31:32 http://mysvnserver.com/project/trunk .
svn diff # confirm that the only diff is your change to file1.php
svn commit
2 pre odpoveď č. 2
cd workingcopy
svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_1
svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_2
svn commit -m "Merged r32 into branches"
0 pre odpoveď č. 3
skúste:
svn merge -r 31:32 http://mysvnserver.com/project/trunk branch_1
kde branch_1
je váš miestny pracovný adresár pobočky. To znamená, že najprv máte zdrojovú adresu a potom cieľ, ktorý musí byť lokálny.