2009-05-12 17 views
105

Ricevo un simbolo tilde quando faccio un svn status.Che cosa significa il simbolo di stato di Subversion "~"?

Ecco l'output del progetto dopo averlo modificato in XCode.

svn status 
M  build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree 
M  build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header 
M  build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols 
~  build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings 
M  main.m 
//more changed files 

Qualche idea di cosa significa? Non riesco a trovarlo su google o su uno qualsiasi dei cheat sheet di svn.

È interessante notare che ho solo modificato main.m, ma ci sono molti file modificati. Non so perché sarebbe. Qualcuno ha qualche consiglio per lavorare con SVN e XCode? Devo solo mettere i miei file sorgente sotto controllo di versione?

Modifica: - causato da un file che era già in controllo versione sostituito da un file di un altro tipo. In questo caso, strings.pbxstrings era un file e ora diventava una directory. La morale della trama è non mettere la tua cartella di compilazione nel controllo della versione.

+0

Hmm, non sono sicuro se c'è un modo per "risolverlo", invece di aggiungere nuovamente. Potresti postare un'altra domanda che ti chiede se esiste un buon modo per risolvere questo stato, maggiore sarà l'attenzione (poiché la domanda corrente ha già una risposta). –

risposta

86

Il SVN Book dice:

dell'oggetto è di versione come un tipo di oggetto (file, directory, link), ma è stato sostituito da altro tipo di oggetto.

Quindi forse era originariamente un singolo file, ma lo hai cambiato in una directory o qualcosa del genere?

+1

Sembra che tu abbia ragione. È una directory ora senza un file .svn. Qualche idea su come risolverlo? Devo cancellarlo da subversion e aggiungerlo di nuovo? – jergason

+0

hai qualche possibilità di trovare un modo per risolvere questo problema? –

+0

@Phill - Ho finito per distruggere il repository ... * sigh * –

15

Da

svn help status 

'~' oggetto di versione ostruito da qualche elemento di tipo diverso

ho visto solo questo, dove i permessi dei file erano cambiate e svn non avevano eseguito l'accesso su di esso ho beleive .

Spero che questo aiuti.

+3

buona risposta RTFM :) +1 – nuqqsa

11

Il modo più semplice per risolvere questo problema è eseguire il backup, quindi eliminare la cartella o il file con questo stato e quindi fare "svn up": non è necessariamente una cartella posizionata da un file, potrebbe essere solo quella cartella .svn è mancante o danneggiato.

2

Potrebbe trattarsi anche di collegamenti simbolici in Windows. Quando si esegue il commit del collegamento simbolico in SVN e poi lo si verifica in Windows, i collegamenti vengono modificati in file normali e questo viene anche segnalato come ~.

+1

Quindi come si risolve questo? – 5upa

10

Ciò può accadere quando si rimuove la cartella .svn in una cartella (ad esempio quando si rimuove una directory e quindi si crea nuovamente la stessa directory) o quando si sostituisce una directory con un collegamento simbolico o un file con lo stesso nome

Supponendo che sia una cartella chiamata a-cartella, è possibile risolvere questo problema eseguendo i seguenti comandi nella cartella principale:

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf 
$ svn up --force . 
svn: Directory 'logs/.svn' containing working copy admin area is missing 
$ svn up --force . 
E a-folder 
... 
Updated to revision n. 

e poi è questione di svn aggiunta/rimozione e commettere i cambiamenti di nuovo

33

Ecco quello che ho fatto:

Se la cartella è test

  1. mv Prova Test1
  2. svn, scollegare i
  3. mv Test1 prova
+0

Grazie, le tue soluzioni funzionano bene. :-) – Anand

+5

Questo ha funzionato per me fino a quando mi sono impegnato tra la rimozione e l'aggiunta. 1. mv Test Test1 2. svn remove Test 3. svn commit -m "Removed Test" 4. mv Test1 Test 5. svn aggiungi Test 6. svn commit -m "Aggiunto Test" –

+1

La risposta di @sancelot è molto migliore; non hai bisogno di rinominare se usi 'svn delete --keep-local fileName'. –

3

avuto un problema simile, SVN si lamentava una serratura. Ecco quello che abbiamo fatto:

  • eseguito il backup dei file
  • Rimossa la directory in questione con rm -r (linux)
  • Ran svn cleanup sulla directory
  • Ran svn up - forza nella directory
3

Voglio solo condividere che si tratta di un problema riscontrato frequentemente durante l'installazione di estensioni in Joomla. Le estensioni vengono installate tramite il CMS e sono di proprietà di Apache senza scrittura di gruppo. Generalmente il passo successivo è aggiungere i file al SVN, ma se non si sudo o si cambiano i file perms, allora SVN fallisce quando non può scrivere la directory .svn. Ecco la soluzione facile.

mv foo foo-bak 
svn up foo 
svn revert foo 

# just for good measure. Foo should not show up in the two following commands. 
ls | grep foo 
svn st | grep foo 

mv foo-bak foo 
svn add foo 
11
svn delete --keep-local x 
svn commit -m "del x" 
svn add x 
svn commit -m "blah" 
+0

Non è necessario rinominare. Hai dato la migliore risposta. –

+0

La migliore risposta! Questo risolve il problema. Nel mio caso si trattava di un soft link commesso come un normale file. – 5upa

0
~ versioned item obstructed by some item of a different kind 
    Second column: Modifications of a file's or directory's properties 
2

spesso avuto questo durante l'aggiornamento moduli sotto (es.) Joomla !, Wordpress o Drupal. A volte la directory .svn viene rimossa dal processo di aggiornamento.

# rename updated directory 
mv foo foo.new 

# restore the old directory 
svn up foo 

# merge/update the old directory with new items 
# notice that the above command will preserve the obsolete files 
# so you should do a diff -r in order to remove them 
cp -r foo.new/* foo 

# Add files commit, etc 
svn add foo/* 
svn delete foo/xx 
svn commit -m "updated module"