1. Comandos para sistemas de control de versiones (Subversión).
1.1. Descripción
Subversion es un sistema de control de versiones diseñado específicamente para reemplazar al popular CVS. Es software libre bajo una licencia de tipo Apache/BSD y se le conoce también como svn por ser el nombre de la herramienta utilizada en la línea de órdenes.
Una característica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un número de revisión independiente, en cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en un instante determinado.
Subversion puede acceder al repositorio a través de redes, lo que le permite ser usado por personas que se encuentran en distintas computadoras. A cierto nivel, la posibilidad de que varias personas puedan modificar y administrar el mismo conjunto de datos desde sus respectivas ubicaciones fomenta la colaboración. Se puede progresar más rápidamente sin un único conducto por el cual deban pasar todas las modificaciones. Y puesto que el trabajo se encuentra bajo el control de versiones, no hay razón para temer por que la calidad del mismo vaya a verse afectada —si se ha hecho un cambio incorrecto a los datos, simplemente deshaga ese cambio.
Más Información http://es.wikipedia.org/wiki/Subversion
Continguts
- Comandos para sistemas de control de versiones (Subversión).
-
Otros comandos del Sistema de Control de Versiones
-
Svn Help
-
Subcomandos disponibles
- add
- blame (praise, annotate, ann)
- cat
- changelist (cl)
- checkout (co)
- cleanup
- commit (ci)
- copy (cp)
- delete (del, remove, rm)
- diff (di)
- export
- help (?, h)
- import
- info
- list (ls)
- lock
- log
- merge
- mkdir
- move (mv, rename, ren)
- propdel (pdel, pd)
- propedit (pedit, pe)
- propget (pget, pg)
- proplist (plist, pl)
- propset (pset, ps)
- resolve
- resolved
- revert
- switch (sw)
- unlock
- update (up)
-
Subcomandos disponibles
-
Svn Help
1.2. Comandos básicos
1.2.0.1. Instalación
- $ aptitude install subversion
- $ apt-get install subversion + clave root
1.2.0.2. Creación copia local
$ svn checkout http://svn.itic.cat/<Nombre del Equipo> <Nombre del Equipo>
Checkout: Es una subcomando del cliente que significa «Hazme una copia local».
http://svn.itic.cat : Es la dirección del servidor de subversión, el computador que gestiona el depósito centralizado de versiones.
1.2.0.3. Dentro del directorio creado
- Crear carpeta:
$ mkdir <nombre de la carpeta>
- Ejemplo: $ mkdir Proyecto
- Registrar nuevo directorio a subversión:
$ svn add <nombre de la carpeta>
- Ejemplo: $ svn add Proyecto
Si añadimos una carpeta donde ya existe un archivo, este a su vez también se añadirá. --> Pdf's, Imágenes, etc.
NUNCA añadir archivos que no sean versionables, es decir, un archivo que nunca cambie de version, ya que esto genera que ocupe mas espacio. Solucion: Incluir un archivo rest donde se encuentren links donde estan esos archivos.
- Ejemplo: Link con la pagina web de OCW con el titulo del proyecto.
- Registrar ficheros al sistema de control de versiones:
$ svn add <nombre del fichero>
- Ejemplo: $ svn add holamundo.py
1.2.0.4. Comprobar archivos y carpetas añadidos
Para comprobar que carpetas y archivos se han añadido, utilizar el comando siguiente el cual muestra todas las carpetas, sub-carpetas y archivos.
- svn Status
1.2.0.5. Cargar al servidor (Deposito)
- $ svn commit -m "Mensaje Indicador de Cambios y Actualizaciones" Ejemplo: $ svn commit -m “Creación de la carpeta Proyecto y fichero holamundo.py ”
1.2.0.6. Actualizar
- $ svn update
1.2.0.7. Fichero Modificado Sin Actualizar (update)
Cuando se modifica un fichero sin haber actualización, al hacer un commit (cargar al servidor) dará un error que nos avisa de que el fichero modificado no es el más nuevo.
Hay que hacer un update, i seguido de esto se habrán “fusionado el fichero antiguo i el nuevo”
- Para comprobar los cambios:
$ less <nombre del fichero>
- Ejemplo: $ less holamundo.py
- Después de este comando ya podemos cargar en el servidor:
- $ svn commit -m "Mensaje”
- Ejemplo: $ svn commit -m "Modificación Parámetro fichero holamundo.py"
2. Otros comandos del Sistema de Control de Versiones
Hay muchos más comandos de los cuales en su mayoría están expuestos en los siguientes pasos, todos ellos se pueden comprobar desde el comando svn help:
2.1. Svn Help
La mayoría de los subcomandos reciben parámetros de tipo archivo y/o directorio. Si no se proveen parámetros a estos comandos, por omisión descenderán recursivamente desde el directorio actual (incluyéndolo).
2.1.1. Subcomandos disponibles
2.1.1.1. add
Pone archivos y directorios bajo control de versiones, agendándolos para ser añadidos al repositorio. Serán añadidos en el próximo commit. uso: add RUTA...
2.1.1.2. blame (praise, annotate, ann)
Envía a la salida el contenido de los archivos o URLs especificados, conjuntamente con la información sobre el autor y la revisión. uso: blame OBJETIVO[@REV]...
- Si se especifica, REV determina la revisión en la que el objetivo se busca primero.
2.1.1.3. cat
Envía a la salida el contenido de los archivos o URLs. uso: cat OBJETIVO[@REV]...
- Si se especifica, REV determina la revisión en la que el objetivo se busca primero.
2.1.1.4. changelist (cl)
Asociar (o desasociar) a la lista de cambios NOMLIST con los archivos indicados. uso: 1. changelist NOMLIST OBJETIVO...
- changelist --remove OBJETIVO...
2.1.1.5. checkout (co)
Check out a working copy from a repository. usage: checkout URL[@REV]... [PATH]
- If specified, REV determines in which revision the URL is first looked up. If PATH is omitted, the basename of the URL will be used as the destination. If multiple URLs are given each will be checked out into a sub-directory of PATH, with the name of the sub-directory being the basename of the URL. If --force is used, unversioned obstructing paths in the working copy destination do not automatically cause the check out to fail. If the obstructing path is the same type (file or directory) as the corresponding path in the repository it becomes versioned but its contents are left 'as-is' in the working copy. This means that an obstructing directory's unversioned children may also obstruct and become versioned. For files, any content differences between the obstruction and the repository are treated like a local modification to the working copy. All properties from the repository are applied to the obstructing path. See also 'svn help update' for a list of possible characters reporting the action taken.
2.1.1.6. cleanup
Limpiar recursivamente la copia de trabajo, removiendo locks, continuando operaciones inconclusas, etc. uso: cleanup [RUTA...]
2.1.1.7. commit (ci)
Envía cambios desde la copia de trabajo al repositorio. uso: commit [RUTA...]
- Se debe proveer un mensaje de log, aunque puede estar vacío. Si no se hace esto con --message o --file, se iniciará un editor. Si alguno de los objetivos está bloqueado o contiene items que lo están, éstos serán desbloqueados después de un commit exitoso.
2.1.1.8. copy (cp)
Duplicate something in working copy or repository, remembering history. usage: copy SRC[@REV]... DST
When copying multiple sources, they will be added as children of DST, which must be a directory.
- SRC and DST can each be either a working copy (WC) path or URL:
WC -> WC: copy and schedule for addition (with history)
WC -> URL: immediately commit a copy of WC to URL
URL -> WC: check out URL into WC, schedule for addition
URL -> URL: complete server-side copy; used to branch and tag All the SRCs must be of the same type.
WARNING: For compatibility with previous versions of Subversion, copies performed using two working copy paths (WC -> WC) will not contact the repository. As such, they may not, by default, be able to propagate merge tracking information from the source of the copy to the destination.
2.1.1.9. delete (del, remove, rm)
Elimina archivos y directorios del control de versiones. uso: 1. delete RUTA...
- delete URL...
- Cada ítem especificado con una RUTA es marcado para ser borrado en el siguiente commit. Los archivos, y directorios a los que nunca se les haya hecho commit antes, serán borrados inmediatamente de la copia de trabajo a menos que se use la opción --keep-local.
- Las RUTAs que son, o contienen, ítems modificados o no versionados, no serán eliminadas a menos que se use la opción --force.
- Cada ítem especificado con un URL es eliminado en el repositorio mediante un commit inmediato.
2.1.1.10. diff (di)
Muestra las diferencias entre dos revisiones o rutas. uso: 1. diff [-c M | -r N[:M]] [OBJETIVO[@REV]...]
- diff [-r N[:M]] --old=OBJ-VIEJ[@REVVIEJ] [--new=OBJ-NUE[@REVNUEV]] \[RUTA...]
- diff NUE-URL[@VIEREJ] URL-NUE[@NUEVREV]
- Muestra los cambios hechos a los OBJETIVOS tal como existen en REV entre dos revisiones. Los OBJETIVOs pueden ser todos rutas de una copia de trabajo o todos URLs. Si son rutas de una copia de trabajo N es por defecto BASE y M la versión local; si son URLs se debe especificar N y M es por defecto HEAD.
- La opción «-c M»es equivalente a «-r N:M»donde N = M-1. Usando «-c -M»se logra lo opuesto: «-r M:N»donde N = M-1.
- Muestra las diferencias entre OBJ-VIEJ tal como existía en REVVIEJ y OBJ-NUEV tan como existía en REVNUEV. Las rutas, si se dan, son
- relativas a OBJ-VIEJ y OBJ-NUEV y restringen la salida a las diferencias para esas rutas. OBJ-VIEJ y OBJ-NUEV pueden ser rutas de una copia de trabajo o URL[@REV]. OBJ-NUEV es por defecto OBJ-VIEJ si no se especifica. -r N hace que REVVIEJ sea por defecto N, -r N:M hace que REVVIEJ sea por defecto N y que REVNUE sea por defecto M.
- Atajo para «svn diff --old=URL-VIEJ[@REVVIEJ] --new=URL-NUEV[@REVNUEV]« Use simplemente «svn diff»para mostrar las modificaciones locales de una copia de trabajo.
2.1.1.11. export
Crea una copia no versionada de un árbol. uso: 1. export [-r REV] URL[@REVPEG] [RUTA]
- export [-r REV] RUTA1[@REVPEG] [RUTA2]
- Exporta un árbol de directorios limpio del repositorio a RUTA, especificado por RUTA, en la revisión REV si se especifica, de otro modo se exporta HEAD. Si se omite la RUTA, se usa el último componente del URL para el nombre del directorio local creado.
- Exporta un árbol de directorios limpio a RUTA2 a partir de la copia de trabajo especificada por RUTA1, en la revisión REV si especificada, si no en WORKING. Si se omite RUTA2, se usa el último componente de RUTA1 para el nombre del directorio local creado. Si no se especifica REV se preservarán todos los cambios locales. Los archivos que no estén bajo control de versiones no se copiarán. Si se especifica, REVPEG determina la revisión en la que el objetivo se busca primero.
2.1.1.12. help (?, h)
Describe el uso de este programa o de sus subcomandos. uso: help [SUBCOMANDO...]
2.1.1.13. import
Hace commit de un archivo o un árbol de archivos no versionado a un URL. uso: import [RUTA] URL
- Hace un commit recursivo de RUTA a URL. Si se omite la ruta se asume «.«. Los directorios padre serán creados en el repositorio cuando sea necesario. Si RUTA es un directorio su contenido se añade directamente debajo de URL. Los items no versionables tales como archivos de dispositivos o pipes se ignoran si se usa --force.
2.1.1.14. info
Muestra información acerca de un ítem local o remoto. uso: info [OBJETIVO[@REV]...]
- Muestra esta información acerca cada OBJETIVO (por omisión: «.«). OBJETIVO puede ser una ruta de una copia de trabajo o un URL. Si se especifica, REV determina en qué revisión se busca primero al objetivo.
2.1.1.15. list (ls)
Lista las entradas de directorio en el repositorio. uso: list [OBJETIVO[@REV]...]
- Lista cada archivo OBJETIVO y los contenidos de cada directorio OBJETIVO tal como existan en el repositorio. Si OBJETIVO es una ruta de una copia de trabajo, se usará el URL de repositorio respectivo. Si se especifica, REV determina la revisión en la que el objetivo se busca primero. El OBJETIVO por defecto es «.«, lo que significa el URL de repositorio correspondiente al directorio de trabajo actual. Con --verbose se mostrarán los siguientes campos para cada ítem:
- Número de revisión del último commit Autor del último commit La letra «O»si está bloqueado (Use «svn info URL»para ver los detalles). Tamaño (en bytes) Fecha y hora del último commit
2.1.1.16. lock
Bloquea rutas de la copia de trabajo o URLs en el repositorio de modo que ningún otro usuario pueda hacer commit de nuevos cambios en ellos. uso: lock OBJETIVO...
- Use --force para robar el bloqueo de otro usuario o de otra copia de trabajo.
2.1.1.17. log
Show the log messages for a set of revision(s) and/or file(s). usage: 1. log [PATH]
2.1.1.18. merge
Apply the differences between two sources to a working copy path. usage: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
- merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
- merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]
- In the first form, the source URLs are specified at revisions N and M. These are the two sources to be compared. The revisions default to HEAD if omitted.
- In the second form, the URLs corresponding to the source working copy paths define the sources to be compared. The revisions must be specified.
In the third form, SOURCE can be either a URL or a working copy path (in which case its corresponding URL is used). SOURCE (in revision REV) is compared as it existed between revisions N and M for each revision range provided. If REV is not specified, HEAD is assumed. '-c M' is equivalent to '-r <M-1>:M', and '-c -M' does the reverse: '-r M:<M-1>'. If no revision ranges are specified, the default range of 0:REV is used. Multiple '-c' and/or '-r' options may be specified, and mixing of forward and reverse ranges is allowed. WCPATH is the working copy path that will receive the changes. If WCPATH is omitted, a default value of '.' is assumed, unless the sources have identical basenames that match a file within '.': in which case, the differences will be applied to that file. NOTE: Subversion will only record metadata to track the merge if the two sources are on the same line of history -- if the first source is an ancestor of the second, or vice-versa. This is guaranteed to be the case when using the third form listed above. The --ignore-ancestry option overrides this, forcing Subversion to regard the sources as unrelated and not to track the merge.
mergeinfo
Muestra información acerca de un ítem local o remoto. uso: info [OBJETIVO[@REV]...]
- Muestra esta información acerca cada OBJETIVO (por omisión: «.«). OBJETIVO puede ser una ruta de una copia de trabajo o un URL. Si se especifica, REV determina en qué revisión se busca primero al objetivo.
2.1.1.19. mkdir
Crea un nuevo directorio bajo control de versiones. uso: 1. mkdir RUTA...
- mkdir URL...
- Crea directorios bajo control de versiones.
- Cada directorio especificado por una RUTA de copia de trabajo es creado localmente y agendado para su adición en el próximo commit.
- Cada directorio especificado por un URL es creado en el repositorio vía un commit inmediato. En ambos casos, todos los directorios intermedios deben ya existir a menos que se use la opción --parents.
2.1.1.20. move (mv, rename, ren)
Mueve y/o cambia el nombre de algo en la copia de trabajo o en el repositorio. uso: move ORIG... DEST
Cuando se muevan múltiples fuentes éstas se añadiran como hijas de DEST, que deberá ser un directorio.
- Nota: este subcomando equivale a «copy»seguido de «delete«. Nota: la opción --revision no sirve a ningún uso y es obsoleta. ORIG y DEST pueden ser ambos RUTAS de copia de trabajo (CDT) o URLs:
CDT -> CDT: mueve y marca para añadir (manteniendo historia) URL -> URL: cambio de nombre en el servidor directamente.
2.1.1.21. propdel (pdel, pd)
Remover NOMBREPROP de los archivos, directorios, o revisiones. uso: 1. propdel NOMBREPROP [RUTA...]
- propdel NOMBREPROP --revprop -r REV [OBJETIVO]
- Remueve propiedades versionadas en la copia de trabajo.
- Remueve propiedades no versionadas remotas en la revisión REV del repositorio.
- OBJETIVO sólo se usa para determinar sobre qué repositorio operar.
2.1.1.22. propedit (pedit, pe)
Edita una propiedad con un editor externo. uso: 1. propedit NOMBREPROP OBJETIVO...
- propedit NOMBREPROP --revprop -r REV [OBJETIVO]
- Edita propiedades versionadas en la copia de trabajo o en el repositorio.
- Edita propiedades no versionadas remotas en la revisión del repositorio.
- OBJETIVO sólo se usa para determinar sobre qué repositorio operar.
Vea «svn help propset»para más información sobre asignar valores a propiedades.
2.1.1.23. propget (pget, pg)
Print the value of a property on files, dirs, or revisions. usage: 1. propget PROPNAME [TARGET[@REV]...]
- propget PROPNAME --revprop -r REV [TARGET]
- Prints versioned props. If specified, REV determines in which revision the target is first looked up.
- Prints unversioned remote prop on repos revision.
- TARGET only determines which repository to access.
2.1.1.24. proplist (plist, pl)
Lista todas las propiedades de archivos, directorios o revisiones. uso: 1. proplist [OBJETIVO[@REV]...]
- proplist --revprop -r REV [OBJETIVO] OBJETIVO sólo se usa para determinar sobre qué repositorio operar.
- Lista propiedades versionadas. Si se especifica, REV determina la revisión en la que el objetivo se busca primero.
- Lista propiedades remotas no versionadas en la revisión del repositorio.
2.1.1.25. propset (pset, ps)
Set the value of a property on files, dirs, or revisions. usage: 1. propset PROPNAME PROPVAL PATH...
- propset PROPNAME --revprop -r REV PROPVAL [TARGET]
- Changes a versioned file or directory property in a working copy.
- Changes an unversioned property on a repository revision.
- (TARGET only determines which repository to access.)
The value may be provided with the --file option instead of PROPVAL.
2.1.1.26. resolve
Resolver conflictos al trabajar copiando archivos o directorios. uso: resolve --accept=ARG [RUTA...]
Nota: actualmente se requiere la opción --accept.
2.1.1.27. resolved
Remueve el estado de conflicto de archivos o directorios en copias de trabajo. uso: resolved RUTA...
Nota: Este subcomando no resuelve semánticamente los conflictos, ni quita los demarcadores de éstos. Simplemente elimina los archivos auxiliares relacionados y permite que la RUTA pueda intervenir de nuevo en un commit. Su uso es ahora obsoleto y se recomienda usar «svn resolve --accept working«.
2.1.1.28. revert
Restituye el archivo de la copia de trabajo (deshace la mayoría de las ediciones locales). uso: revert RUTA...
Nota: Este subcomando no requiere de acceso a la red y resuelve cualquier estado de conflicto. Sin embargo no restituye directorios eliminados.
Los tres últimos comandos no tienen más datos.
2.1.1.29. switch (sw)
2.1.1.30. unlock