Pregunta

Estoy usando SVN para tareas de desarrollo, pero todavía tengo muchos archivos administrados con RCS, porque no parece razonable editarlos en mi copia de trabajo privada del repositorio SVN (ya que a menudo son solo archivos de configuración que también se prueban mejor en su lugar). Tampoco parece razonable tener una copia de trabajo del repositorio donde haya archivos para poner bajo el control de SVN, así que solo uso RCS en su lugar.

¿Cuál es su enfoque para administrar archivos que, idealmente, no se deben mover / editar y probar in situ?

Para ser más precisos: me gustaría tener el equivalente de

  • tener un archivo.txt protegido contra escritura
  • un comando como " co -l file.txt " (RCS) para hacerlo editable
  • la capacidad de editarlo en su lugar y probarlo de inmediato
  • un comando como " ci -u file.txt " (RCS) para registrar el cambio, agregar un comentario y hacer que sea de solo lectura nuevamente
  • otros usuarios también deberían poder hacer esto en el mismo lugar
  • pero, la información de la versión debe ir a un lugar seguro (se supone que svn rep), en un servidor diferente
¿Fue útil?

Solución

Uso los sistemas de archivos de copia en escritura (CoW) como Ext3cow (descargo de responsabilidad, soy uno de sus colaboradores ) para gestionar un montón de cosas. Por ejemplo:

  • Usar instantáneas para revertir repositorios completos, sin importar de qué tipo. Por ejemplo, si arruino completamente un árbol git, puedo cp -dpfR ./@123456789 ./, que reemplaza mi repositorio de trabajo con archivos tal como estaban en la época 123456789.
  • Usando el versionado / snapshots como su propio VCS inmutable, ideal para / etc y otras cosas. Como los archivos en el pasado no se pueden eliminar ni modificar, cada instantánea es una revisión inmutable de un solo archivo o de todo el árbol a tiempo.

Normalmente, uso Git o Mercurial sobre Subversion porque prefiero un VCS distribuido, pero ahora insisto en mantener mis repositorios en un FS de versiones localmente.

Para los usuarios de Windows, creo que hay algunas implementaciones portátiles del mismo hecho completamente en Python ... pero no estoy seguro.

Otros consejos

Como se dijo antes, estás tratando de usar SVN para algo que debería usar un DVCS como git o Mercurial.

Todos pueden tener su propio repositorio y luego sincronizarlo con el repositorio central principal (como el repositorio SVN).

Esto es realmente lo que uso en mis propios proyectos.

Lo único que no entendí es por qué necesitas cerraduras. Un archivo no tiene que ser de solo lectura. Probablemente estés pensando de esa manera debido a la forma en que SVN se fusiona (casi siempre tienes que hacerlo a mano). Git realmente hace magia [1] y la mayoría de las fusiones van sin la intervención humana.

[1] Ok, no es magia. Mientras que SVN se preocupa por los archivos, Git se preocupa por los fragmentos de código. De esta manera, puede fusionar un archivo cambiado dos veces al mismo tiempo, siempre y cuando no cambies exactamente el mismo fragmento de código.

Los sistemas de control de versiones distribuidos modernos como Git, Mercurial o Bazaar son la mejor herramienta en una situación como esta. No por el aspecto distribuido (que claramente no es crucial aquí), sino porque es extremadamente fácil crear un repositorio in situ.

En Mercurial solo tienes que hacer:

cd ~/directory
hg init

Con Git es similar:

cd ~/directory
git init
git add .

Cada copia de trabajo es un repositorio completo y, si lo desea, puede enviarla al servidor remoto como respaldo. Además, todos los datos del repositorio se almacenan en un único directorio oculto, por lo que evita el problema de tener toneladas de directorios .svn por todo el lugar.

Utilizo Mercurial para administrar / etc en mis servidores y lo encuentro extremadamente conveniente. Una cosa a tener en cuenta, no marcará su archivo de solo lectura (como RCS), pero considero que esto es una ventaja.

Debe tener en cuenta que los repositorios SVN son gratuitos. Puedes crear tantos como quieras.

También debe darse cuenta de que no tiene que revisar todo el repositorio. Dijiste:

  

Tampoco parece razonable   tener una copia de trabajo del repositorio   donde haya archivos para colocar   Control SVN

No estoy seguro de lo que realmente intentas hacer, pero tengo la impresión de que usas SVN de una manera peculiar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top