[Linuxtrent] Subversion, che mal di testa!

  • From: Matteo Bertamini <bertamini.matteo@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 18 Mar 2012 06:36:56 +0100

Salve a tutti, 
sto sperimentando un po' subversion tramite un mio progetto ospitato su 
sourceforge. In particolare, sto provando a giocare un po' con la modifica di 
directory simulando due persone che lavorano contemporaneamente sullo stesso 
progetto.

Ecco la cronologia del mio esperimento

Persona A:
crea questa struttura 
Dir A
        Dir B
                Dir C
                
e effettua il primo commit.

Persona b:
update (o checkout). Ottiene quindi:

Dir A
        Dir B
                Dir C


aggiunge poi un file in C nella sua working dir
Dir A
        Dir B
                Dir C
                        file1

e fa un commit e porta il repository tale quale alla sua working dir.


Persona a:
sposta C nella root della working dir. Notare che non ha ancora il file, non 
avendo fatto update

Dir A           Dir C
        Dir B


effettua ora un commit. 
Ricevo quindi un out-of-date:
acBook-Pro-di-Matteo:branch1 bertuz$ svn commit
Cancello       a/b/c
svn: E155011: Commit fallito (seguono dettagli):
svn: E155011: Directory '/Users/bertuz/Documents/svntrial1/branch1/a/b/c' is 
out of date
svn: E170004: Item '/branch1/a/b/c' is out of date
svn: E155011: Il tuo messaggio di log è stato salvato in un file temporaneo:
svn: E155011:    '/Users/bertuz/Documents/svntrial1/branch1/svn-commit.tmp'

che risolvo con un update nella root della working dir:
MacBook-Pro-di-Matteo:branch1 bertuz$ svn update
Updating '.':
   C a/b/c
   A a/b/c/unfile
Aggiornato alla revisione 66.
Summary of conflicts:
  Tree conflicts: 1

ottimo! fin qui tutto come previsto. a/b/c va in conflitto. Dovrebbe essere 
cancellata (per l'operazione di move realizzata), ma il tizio "b" ha fatto un 
commit con addirittura un file in essa.

Quindi..:
MacBook-Pro-di-Matteo:branch1 bertuz$ svn status
D     C a/b/c
      >   local delete, incoming edit upon update
D       a/b/c/unfile
A  +    c
Summary of conflicts:
  Tree conflicts: 1

come ci aspettiamo, noi la vogliamo cancellata. Ma il repository ha una bella 
a/b/c da aggiornare invece. Mi viene quindi in mente, ragionando come la 
persona "a" in questa condizione, che magari non so nulla su tali nuove 
modifiche da parte di b, meglio vedere cos'ha combinato in a/b/c. Quindi tento 
un bel:

acBook-Pro-di-Matteo:branch1 bertuz$ svn resolve --accept="theirs-full" a/b/c
svn: warning: W155027: Tree conflicts can only be resolved to 'working' state; 
'/Users/bertuz/Documents/svntrial1/branch1/a/b/c' not resolved

COOOSA? solo working?? Ma che diamine... e se volessi prima dare un occhio? 
così mi perdo le novità in c! Possibile che i conflitti della struttura sono 
risolvibili solo in "working"? Mi suona un po' come baco... o forse sono troppo 
ingenuo per capire? Voi ritrovandovi come "a", che fareste a quel punto? La mia 
ide era: lasciare che dal repository mi scriva a/b/c e mi dia tuto ciò che ha 
(theirs-all), poi valuto e sposto eventuali cose lì dentro nella /c  che ho 
spostato. 

Mi potete aiutare a chiarire questo concetto? Mi spiace l'esempio un po' 
intricato ma ho cercato di semplificarlo il più possibile :-)

Buona domenica a tutti!
Matteo--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: