Guest User

Untitled

a guest
Jan 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.59 KB | None | 0 0
  1. svn cat file
  2. svn cat url/file
  3. stampa a video il file indicato del BASE! Cioè la versione presente sulla repo anche nel caso sia stato modificato.
  4. Utile da usare con pipe e redirezioni, ad esempio svn cat file > file per ripristinare un file (uguale a svn revert)
  5.  
  6. svn ls url/path
  7. visualizza il contenuto di una path di una repo svn
  8.  
  9. svn info path/file/url
  10. visualizza informazioni
  11.  
  12. svn info, cat e url possono avere -r REVISIONE per visualizzare le informazioni di una data revisione
  13.  
  14. --------------------------------------------------------------------------------------------------------
  15. In file config di subversion (quello di impostazioni del client locale, non del server)
  16. # diff-cmd = diff_program (diff, gdiff, etc.)
  17. # diff-extensions = -u -p
  18. Il primo serve a usare un programma esterno di diff, il secondo per specificare parametri extra, ad esempio ignorare gli spazi
  19.  
  20. # global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__
  21. # *.rej *~ #*# .#* .*.swp .DS_Store [Tt]humbs.db
  22. I file verranno sempre ignorati, uguale a .gitignore, ma per qualsiasi working directory
  23.  
  24. autoprops
  25. si possono specificare i metadata/mime per i file, così svn riesce a capire se sono binari o di testo
  26. si possono indicare anche quali caporiga usare (ad esempio CRLF per Windows)
  27.  
  28. --------------------------------------------------------------------------------------------------------
  29. Changelist
  30. svn non ha la funzione di add di git, tutti i file sono inviati al primo commit, ma si potrebbero aver fatto due modifiche e volerle mandare separatamente, oppure una subito e l'altra in futuro.
  31.  
  32. Per risolvere si usano changelist, cioè insiemi di file ragruppati e inviabili un gruppo per volta
  33. ATTENZIONE! Si ragruppano a file, non a modifiche, se un file appartiene a due modifiche diverse... fregati.
  34. per creare un gruppo:
  35. svn changelist NOMECHANGELIST FILEDAAGGIUNGERE
  36. per committarla:
  37. svn commit -m "asdasd" --changelist NOMECHANGELIST
  38. la changelist è presente solo in locale (gli altri utenti non la vedono) ed una volta effettuato il commit verrà rimossa
  39. non ha specificato a lezione come aggiungere altri file, basta guardare la documentazione
  40.  
  41. --------------------------------------------------------------------------------------------------------
  42. ripetuto il comando export per prelevare i file da una repo senza creare una working copy
  43. --------------------------------------------------------------------------------------------------------
  44. OPERATIVE REVISION / PEGVERSION
  45. Situazione: creo un file X alla revisione 1, alla r3 lo elimino, alla r5 lo ricreo, arrivo alla r7
  46. il comando "svn cat -r2 X" stamperà "il file X non esisteva alla revisione 2"
  47. Questo perchè il file X precedente ed il successivo NON sono lo stesso file, pur avendo lo stesso nome, vengono identificati dalla PEGVERSION
  48. Di default la pegversion dei file indicati è quella della revisione corrente, si indica con @, quindi
  49. svn cat -r2 X
  50. era implicitamente
  51. svn cat -r2 X@7
  52. riassumendo:
  53. X@7 = X@6 = X@5
  54. X@4 non esiste
  55. X@3 = X@2 = X@1
  56. X@6 -r5 è valido, indica la versione della revisione 5 del file X "tracciato" nella revisione 6
  57. X@5 -r6 è ancora valido, ma più insolito, può essere utile a controllare se un file è stato rimosso e ricreato nel tempo
  58. Il sistema di controllo della validità è basato su alberi che si diramano se una revisione duplica un file
  59. ad esempio nella revisione 6 X è stato copiato in Y
  60. Y@6 -r5 stamperà il Y nella revisione X, cioè X@5 -r5
  61.  
  62.  
  63. r5 r6
  64.  
  65. ___ Y
  66. X __/
  67. \___ X
  68.  
  69. --------------------------------------------------------------------------------------------------------
  70. svn log
  71. stampa gli ultimi commit
  72. -lNUMERO
  73. stampa gli ultimi NUMERO commit
  74. -v
  75. verbose, indica anche quali file sono stati modificati
  76. -r x:y
  77. dalla revisione x alla revisione y
  78. -r x
  79. nella revisione x
  80. --stop-on-copy
  81. stampa i commit fino a quando la cartella/file è stata creata mediante duplicazione, utile per i branch, altrimenti un file copiato mostra i commit che ha avuto anche precedentemente alla copia
  82.  
  83. svn diff
  84. stampa il cambiamento in un file o directory
  85. --summarize
  86. indica solo i file modificati
  87. -c 10
  88. indica solo i cambiamenti nel commit 10, è equivalente a -r9:10
  89. svn url1 url2
  90. mostra le differenze tra due repo, o tra due catelle delle repo
  91.  
  92. NOTA: ricordarsi che ^ è sinonimo dell'url corrente della repo, utile per abbreviare gli url
  93. --------------------------------------------------------------------------------------------------------
  94. Conflitti su file: già affrontati
  95. Conflitti su cartelle:
  96. Io faccio una modifica a X/file, nel frattempo qualcuno rinomina X in Y, quando faccio svn co up un errore:
  97. A + C X
  98. M X/file
  99.  
  100. X non è presente nella repo, andrebbe aggiunta, ma c'è un conflitto perché esiste in realtà ma è spostata
  101. M è il file modificato il locale, non più presente in remoto
  102.  
  103. Soluzioni: cancello Y, risolvendo il conflitto
  104. oppure sposto X/file in Y/file, elimino X
  105.  
  106. Problema: Y/file potrebbe avere modifiche da integrare con X/file
  107. Soluzione: uso "patch", strumento Unix/Linux (Su Windows si può installare con Cygwin)
  108. cd X
  109. svn diff > ../patchfile
  110. cd ..
  111. cd Y
  112. patch ../patchfile (applica le modifiche rilevate su X/file in Y/file, se conflitti risolvo al solito modo)
  113. poi elimino patchfile e X, risolto
  114. --------------------------------------------------------------------------------------------------------
  115. Branches
  116. struttura di default di un progetto:
  117. -branches: rami di sviluppo
  118. -tags: milestone o "segnalibri", che NON devono essere modificati
  119. -trunk: ramo di lavoro corrente, il master di git
  120. Attenzione! la struttura è una convenzione usata, non è obbligatorio fare in questo modo (nulla mi vieta di modificare tags)
  121.  
  122. per creare branch o tags uso cp, nessun comando particolare
  123. comando svn merge ^/trunk da un branch per mettere le modifiche sul trunk
  124. se dal trunk voglio aggiornare un branch prima di fare un merge per verificare le ultime modifiche uso
  125. (nel trunk)
  126. svn merge ^/branches/funzionalità-XYS
  127. verifico, tutto ok, merge
  128. (nel branch)
  129. svn merge ^/trunk --reintegrate
  130. reintegrate serve a dirgli di ignorare tutte le modifiche apportate dal merge precedente dal trunk al branch
  131. Attenzione! effettuabile 1 volta per branch, dopo genera conflitti
  132.  
  133. Da un branch a un altro posso fare qualsiasi numero di merge, finchè sono nella stessa direzione
  134. I problemi ci sono solo se le modifiche passano da uno all'altro
  135.  
  136. comando merge:
  137. svn merge VERSIONEBASE VERSIONEMODIFICATA DESTINAZIONEDELLEMODIFICHERILEVATE
  138. usabile anche come
  139. svn merge -r4:6 ^/branches/ASD (copia da dove sono ora le modifiche dalla revisione 4 alla 6 e applicale in ASD)
  140.  
  141. trick per rimuovere un commit:
  142. svn merge -r10:9 ^/trunk . (non ho ben capito i parametri in questo caso, devo riguardare la documentazione)
  143. prende le differenze tra la versione 10 e la 9 e le applica, praticamente l'opposto del commit 10
  144. --------------------------------------------------------------------------------------------------------
  145. svn switch
  146. permette di passare da un url all'altro senza rimuovere e ricreare la working copy, come git
  147. MA
  148. può far cambiare un url solo a una directory o un file! (in teoria si fa anche con git, non so come)
  149. ES:
  150. sviluppo X che usa libreria Y, la libreria Y la voglio sempre prelevare dal svn di Y, non voglio copiarla e aggiornarla
  151. cd X
  152. cd Y
  153. svn switch URL-Y --ignore-ancestry (senza questo ignore mi segnala un errore perché sto cambiando un url solo a una porzione della working copy, che è rara come operazione)
  154. svn st -> ai documenti switchati mostra una S
  155.  
  156. Trick inutile:
  157. In una cartella di una repo si più settare come url la sua root, duplicando i file TRANNE la cartella stessa, altrimenti sarebbe un loop infinito, ogni modifica nella cartella viene fatta alla root e il contrario. Non serve a nulla.
Add Comment
Please, Sign In to add comment