tutorial tortoise svn version-control

svn - tortoise - Desproteger un archivo de Subversion



tortoise svn (19)

Si desea ver readme.txt en su repositorio sin verificarlo:

$ svn cat http://svn.red-bean.com/repos/test/readme.txt
Este es un archivo README. Deberías leer esto.

Sugerencia: si su copia de trabajo está desactualizada (o si tiene modificaciones locales) y desea ver la revisión HEAD de un archivo en su copia de trabajo, svn cat buscará automáticamente la revisión HEAD cuando le asigne una ruta:

$ cat foo.c
Este archivo está en mi copia de trabajo local y tiene los cambios que he realizado.

$ svn cat foo.c
Última revisión fresca desde el repositorio!

Source

"No es posible desproteger un solo archivo. El mejor nivel de verificación que puede hacer es a nivel de directorio".

¿Cómo soluciono este problema cuando uso Subversion?

Tenemos esta carpeta en Subversion donde guardamos todas nuestras imágenes. Solo quiero ver un archivo (imagen) de eso. Esta carpeta es realmente grande y tiene un montón de otras cosas que no necesito ahora.


A continuación se presenta una solución equivalente de TortoiseSVN de la respuesta aceptada (escribí esto en un documento interno para mi compañía, ya que estamos adoptando SVN). Pensé que sería útil compartir aquí también:

Desproteger un solo archivo: Subversion no admite la extracción de un solo archivo, solo admite la extracción de estructuras de directorios. (Referencia: http://subversion.tigris.org/faq.html#single-file-checkout ). Esto se debe a que con cada directorio que se desprende como una copia de trabajo, los metadatos relacionados con las modificaciones / revisiones de archivos se almacenan como una carpeta oculta interna (.svn / _svn). Esto no es compatible actualmente (v1.6) para archivos individuales.

Estrategia recomendada alternativa: tendrá que realizar la parte del directorio de pago solo una vez, a continuación puede ir directamente y comprobar sus archivos individuales. Haga una comprobación dispersa de la carpeta principal y la estructura del directorio. Una comprobación dispersa es básicamente verificar solo la estructura de carpetas sin rellenar los archivos de contenido. Por lo tanto, solo comprueba las estructuras de directorio y no necesita verificar TODOS los archivos, como le preocupaba. Referencia: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html

Paso 1 : proceder al navegador del repositorio

Paso 2 : haga clic con el botón derecho en la carpeta principal dentro del repositorio que contiene todos los archivos en los que desea trabajar y seleccione Checkout.

Paso 3 : dentro de la nueva ventana emergente, asegúrese de que el directorio de pago apunte a la ubicación correcta en su PC local. También habrá un menú desplegable con la etiqueta "profundidad de pago". Elija "Solo este elemento" o "Hijos inmediatos, incluidas las carpetas", según sus necesidades. Se recomienda la segunda opción ya que, si desea trabajar en una carpeta anidada, puede continuar directamente la próxima vez, de lo contrario tendrá que seguir todo este procedimiento nuevamente para la carpeta anidada.

Paso 4 : la (s) carpeta (s) principal (es) ahora debería estar disponible dentro de su carpeta elegida localmente y ahora se está monitoreando con SVN (ahora debe estar presente una carpeta oculta ".svn" o "_svn"). Dentro del repositorio ahora, haga clic con el botón derecho en el archivo único que desea revisar solo y seleccione la opción "Actualizar artículo a revisión". Ahora se puede trabajar en el archivo único y volver a guardarlo en el repositorio.

Espero que esto ayude.


Acabo de buscarlo y exportar el único archivo. Si tiene acceso HTTP, solo use el navegador web para encontrar el archivo y capturarlo.

Si necesitas volver a instalarlo después de editarlo, puede que sea un poco más tedioso, pero estoy seguro de que podría haber una función de svn import ...


Como ninguna de las otras respuestas me funcionó, lo hice usando este truco:

$ cd /yourfolder svn co https://path-to-folder-which-has-your-files/ --depth files

Esto creará una nueva carpeta local que solo tiene los archivos de la ruta remota. Luego puede hacer un enlace simbólico a los archivos que desea tener aquí.


Con Subversion 1.5, es posible retirar (todos) los archivos de un directorio sin revisar ningún subdirectorio (las distintas banderas --depth). No es exactamente lo que pediste, sino una forma de "menos que todo".


Este problema está cubierto por:

http://subversion.tigris.org/issues/show_bug.cgi?id=823

Hay un script adjunto que le permite desproteger un solo archivo desde svn, hacer cambios y volver a confirmar los cambios en el repositorio, pero no puede ejecutar "svn up" para desproteger el resto del directorio. Ha sido probado con svn-1.3, 1.4 y 1.6.


Haz algo como esto:

mkdir <your directory>/repos/test svn cat http://svn.red-bean.com/repos/test/readme.txt > <your directory>/repos/test/readme.txt

Básicamente, la idea es crear el directorio donde desea capturar el archivo de SVN. Use el comando svn cat y redirija la salida al mismo archivo nombrado. Por defecto, el gato volcará información en stdio.


Intente svn export lugar de svn checkout . Eso funciona para archivos individuales.

El motivo de la limitación es que el proceso de checkout crea una copia de trabajo, que contiene metainformación sobre el repositorio, la revisión, los atributos, etc. Los metadatos se almacenan en subdirectorios llamados ''.svn''. Y los archivos individuales no tienen subdirectorios.


La respuesta simple es que usted puede svn export el archivo en lugar de desprotegerlo.

Pero eso podría no ser lo que quieres. Es posible que desee trabajar en el archivo y volver a registrarlo, sin tener que descargar GB de basura que no necesita.

Si tiene Subversion 1.5+, haga una comprobación dispersa:

svn checkout <url_of_big_dir> <target> --depth empty cd <target> svn up <file_you_want>

Para una versión anterior de SVN, podría beneficiarse de lo siguiente:

  • Verifique el directorio usando una revisión en el pasado lejano, cuando estaba menos lleno de basura que no necesita.
  • Actualice el archivo que desee, para crear una revisión mixta. Esto funciona incluso si el archivo no existía en la revisión que verificaste.
  • ¡Lucro!

Una alternativa (por ejemplo, si el directorio tiene demasiados datos no deseados desde la revisión en la que se creó) es hacer una copia de URL-> URL del archivo que desea en un nuevo lugar en el repositorio (de hecho, esta es una rama funcional). del archivo). Echa un vistazo a ese directorio y haz tus modificaciones.

No estoy seguro de si puede fusionar su copia modificada completamente en el repositorio sin una copia de trabajo del objetivo, nunca lo he necesitado. Si es así, haz eso.

Si no es así, desafortunadamente es posible que tenga que buscar a otra persona que tenga todo el directorio revisado y que lo hagan. O quizás para cuando hayas realizado las modificaciones, el resto habrá terminado de descargarse ...


Puedes hacerlo en dos pasos:

  1. Compruebe un repositorio SVN vacío con metainformación solamente:

    $ cd /tmp $ svn co --depth empty http://svn.your.company.ca/training/trunk/sql

  2. Ejecute svn up actualizar el archivo especificado:

    $ svn up http://svn.your.company.ca/training/trunk/sql/showSID.sql


Quería registrar un solo archivo en un directorio, que no formaba parte de una copia de trabajo.

http://subversion.repository.server/repository/module/directory/myfile el archivo en la siguiente URL: http://subversion.repository.server/repository/module/directory/myfile

svn co http://subversion.repository.server/repository/module/directory/myfile /**directoryb**

Así que verifiqué el directorio dado que contiene el archivo de destino que quería obtener en un directorio ficticio (por ejemplo, etcb para la URL que termina con /etc ).

Luego vacié el archivo .svn / entries de todos los archivos del directorio de destino que no necesitaba, para dejar solo el archivo que quería. En este archivo .svn / entries , tiene un registro para cada archivo con sus atributos, así que deje solo el registro del archivo que desea obtener y guárdelo.

Ahora solo necesita copiar y luego '''' .svn '''' al directorio que será una nueva "copia de trabajo". Entonces solo necesitas:

cp .svn /directory cd /directory svn update myfile

Ahora el directorio del directorio está bajo control de versión. No olvide eliminar el directorio directoryb que era solo una "copia de trabajo temporal".


Se puede cubrir una actualización en caso de que realmente necesite tener el archivo incluido en una caja de otra carpeta.

Desde SVN 1.6 puede hacer archivos externos , una especie de svn enlaces. Esto significa que puede tener otra carpeta versionada que incluya un solo archivo. También es posible realizar cambios en el archivo en una caja de esta carpeta.

Es muy sencillo, compruebe la carpeta en la que desea incluir el archivo y simplemente agregue una propiedad a la carpeta.

svn propedit svn:externals .

con contenido como este:

file.txt /repos/path/to/file.txt

Después de confirmar esto, el archivo aparecerá en futuras cajas de la carpeta. Básicamente funciona, pero hay algunas limitaciones como se describe en la documentación vinculada anteriormente.


Si solo desea exportar el archivo, y no necesitará actualizarlo más tarde, puede hacerlo sin tener que usar los comandos SVN.

Usando el navegador de repositorios TortoiseSVN , seleccione el archivo, haga clic derecho y luego seleccione " Copiar URL al portapapeles ". Pegue esa URL en su navegador y, después de iniciar sesión, se le pedirá que descargue el archivo.

De esta manera también puede seleccionar la revisión deseada y descargar una versión anterior del archivo.

Tenga en cuenta que esto es válido si su servidor SVN tiene una interfaz web.


Si solo quieres un archivo sin información de revisión usa

svn export <URL>


Usando la técnica de extracción de datos dispersa, PUEDE desproteger un archivo particular que ya está desprotegido o existe ... con un simple truco:

Después de verificar el nivel superior de su repositorio usando la opción ''solo este elemento'', en el explorador de Windows, DEBE hacer clic con el botón derecho en el archivo que necesita actualizar; Elija Repo Browser en el menú contextual; encuentre ese archivo OTRA VEZ en el navegador del repositorio, y haga clic derecho. Ahora debería ver el "elemento de actualización a revisión" en el menú contextual.

No estoy seguro de si es una característica no documentada o simplemente un error. Me tomó un horario extendido después del trabajo para finalmente encontrar este truco. Estoy usando TortoiseSVN 1.6.2.


Utilice svn cat o svn export .

Para eso, no necesita buscar el directorio de trabajo, pero no podrá realizar ningún cambio que realice. Si necesita realizar cambios y confirmarlos, necesita un directorio que funcione, pero no tiene que buscarlo por completo. Verifique la revisión donde el directorio estaba todavía / casi vacío, y luego use ''svn cat'' para extraer el archivo de HEAD.


Vaya al navegador de repo, haga clic con el botón derecho en el archivo y use ''Guardar como'', aunque estoy usando TortoiseSVN.


La respuesta de Steve Jessop no funcionó para mí. Leí los archivos de ayuda para SVN y, si tienes una imagen, probablemente no quieras volver a registrarla a menos que estés haciendo Photoshop, por lo que exportar es un mejor comando que el pago, ya que no se revisa (pero es algo menor).

Y el --depth ARG no debe estar vacío, sino archivos para obtener los archivos en el directorio inmediato. Así que obtendrás todos los campos, no solo uno, sino que el vacío no devuelve nada del repositorio.

svn co --depth files <source> <local dest>

o

svn export --depth files <source> <local dest>

En cuanto a las otras respuestas, cat te permite leer el contenido que es bueno solo para texto, no imágenes de todas las cosas.


cd C:/path/dir svn checkout https://server/path/to/trunk/dir/dir/parent_dir--depth empty cd C:/path/dir/parent_dir svn update filename.log

(Editar nombre de archivo.log)

svn commit -m "this is a comment."