2008-11-16 6 views

Respuesta

29
svn log --xml 

Tener los registros generados en xml hace que sean muy fáciles de analizar y analizar.

7

svn log -r BASE: CABEZA (posiblemente con una opción v)

muestra lo que ha pasado entre su versión y la versión de la cabeza. Usualmente te dice quién rompió la construcción también.

4

En versiones más nuevas: resolución de conflictos interactiva. De esta forma, los conflictos no necesitan ser resueltos manualmente (en la mayoría de los casos, es muy trivial hacer esto, es molesto si tiene que hacerse para un gran lote de archivos). Pero en realidad, el manejo de conflictos en general (es decir, que le impide cometer archivos conflictivos).

17

Conseguir la historia de una rama desde el punto de ramificación:

svn log --stop-on-copy 
3

Realización de una operación de deshacer mediante la fusión de la antigua revisión w/HEAD.

5

La apilación y bibliotecas de subversión. Puede usar un repositorio SVN central incluso si prefiere trabajar con un VCS distribuido, ya sea usando el SVK "svn native" o, por ejemplo, Mercurial (a través del a bridge). Las buenas apis también significan que son posibles mejores herramientas: pueden trabajar directamente con SVN, en lugar de utilizar el cliente de línea de comandos e intentar analizar los resultados.

27

Las secuencias de comandos de anzuelo (inicio-confirmación, precompromiso, post-confirmación) son excelentes herramientas para un sistema de compilación que depende de SVN.

Otro que es probablemente demasiado "obvio", está llamando 'svn export' desde un script de compilación. Es una manera muy agradable de implementar archivos en algún directorio de destino (un sitio web, por ejemplo), porque obtienes una copia limpia sin archivos ocultos .svn. Es mucho mejor que actualizar una copia de trabajo de "implementación" remota.

+2

Sin embargo, una copia de trabajo remota es más rápida. – rix0rrr

+0

rix0rr: la empresa para la que trabajo tiene un script que comprueba los archivos que han cambiado con cada confirmación y exporta solo esos. Esto es incluso más rápido que hacer la actualización svn. – notJim

13

La api de Subversion y los enlaces de cliente que se construyen sobre eso.

La mayoría de los sistemas SCM son una combinación de herramientas que permiten llamarlos a través de una línea de comandos, pero la subversión está diseñada como una API estable para ser utilizada por múltiples clientes. Simplemente proporciona un cliente de línea de comandos además de eso.

TortoiseSVN, AnkhSVN, SharpSvn, y dozens of other applications and libraries [1] no estaría allí sin subversión ser una API.

(me alegro de algunos de los otros/SCM nuevas implementaciones están empezando a darse cuenta de que un cliente de línea de comandos no es suficiente para ser exitoso)

[1] La página de enlaces está offline, pero todavía se puede ver la versión antigua en http://svn.apache.org/repos/asf/subversion/branches/1.6.x/www/links.html

+3

Sí, este es un gran problema con Git. AFAIK, las encuadernaciones de Ruby's Git simplemente envuelven la línea de comando.Fue un verdadero obstáculo cuando intentaba escribir un back-end de Git para RabbitVCS. – detly

4

Y una segunda respuesta:

svn status --depth files <path> 

Este apoyo profundidad que se introdujeron en 1,5 Subversion hace mucho más rápido que antes de otras herramientas.

26

externals.

La maravillosa capacidad de incorporar bibliotecas de terceros a su código base y mantenerlas actualizadas.

+4

Me encantan los exteriores. Todavía un poco doloroso en Mercurial. :-( –

5

svn diff, incluso cuando no está conectado y podría pensar que la diferencia no es posible.

+0

Las maravillas de la copia prístina :) Tenga en cuenta que sin acceso a la red solo puede diferir de su copia de trabajo BASE revisión. –

12

ir hacia atrás un conjunto de cambios desde su copia de trabajo (por ejemplo, 4321.):

svn merge -c -4321 . 
svn checkin 

o múltiples conjuntos de cambios:

svn merge -c -4321,-5432 . 
+1

El signo menos adelantado antes del número de revisión es importante. "-4321" funciona, "4321" no. – kamens

6

"svn: ignore" propiedad

11

Mi no obvio favorito La característica de svn es cómo cubre todos mis directorios de origen con subdirectorios de metadatos .svn. ;)

+0

No es broma. git FTW. –

+8

Se solucionará en svn 1.7 –

+1

¡No más! ¡Viva! – aldo

24

svn blame por supuesto. Tengo que saber de quién es la culpa.

+2

Diría que anotar (también conocido como culpa, elogio) * es * bastante obvio. – Jonik

+1

Este es el argumento convincente # 1 para volcar VSS. –

+3

Continúo encontrándome con desarrolladores que no lo conocen ... – theschmitzer

2

se encontró mientras buscaba algo. . aquí está uno de mis favoritos, el no ovioso. Puede copiar y pegar la "copia de trabajo svn" en cualquier otra máquina o cualquier otro sistema operativo, funciona como si hubiera sido verificado. ¡Esto funciona incluso si fue revisado por un usuario diferente!

2

La opción de configurar un repositorio esclavo para duplicar el principal. Entonces un grupo remoto puede hacer todas sus lecturas desde una copia local. Realmente acelera el desarrollo.

53

Agregado en svn 1.6: la notación abreviada caret ^ para acortar las URL de subversión cuando se usa la línea de comando. El símbolo de intercalación se puede usar en lugar de la parte de la URL hacia arriba a través del nombre del repositorio.

Ex:

svn switch ^/myProject/branches/fooBranch 

en lugar de

svn switch http://machine22/repos/SandboxRepo/myProject/branches/fooBranch 
+2

cool no sabía de esta función –

+0

Parece que se introdujo en svn 1.6. (Funciona con mi repositorio 1.4 siempre que mi cliente sea 1.6.) –

+6

Tenga en cuenta que en Windows el cursor es un carácter de escape y debe duplicarse o citarse para funcionar. – Eterm

1

svn cleanup

Cuando eso también dice "Ejecutar la limpieza SVN para limpiar"

find . |grep \\.svn/lock |xargs rm

5

Compatibilidad entre plataformas para Unicode nombres de archivo

estoy trabajando en una empresa japonesa, por lo que el nombre de archivo Unicode apoyo de Subversion es grande. Me ha decepcionado ver cómo poorly Unicode filenames are handled by git and Mercurial en comparación (particularmente en Windows).

(También aprecio lo bien Subversion maneja Unicode en los mensajes de registro, etc.)

0

desde el punto de vista del administrador, svndumpfilter exclude $file puede disminuir el tamaño del repositorio de forma sustancial.

Cuestiones relacionadas