2009-05-21 7 views
51

¿Es posible ignorar los cambios a un archivo en subversión localmente en un solo cliente, sin propagar el ignorar a todo el repositorio?Subversion: ignore las modificaciones en un archivo localmente en un solo cliente

El problema particular con el que estoy tratando es que he comprobado un proyecto y he modificado un montón de archivos, incluido el Makefile, que ya forma parte del repositorio. Ahora el entorno en el que estoy trabajando es diferente del resto del grupo, y quiero que los cambios en los Makefiles permanezcan locales en mi máquina y no se comprometan.

Sin embargo, no quiero configurar svn: ignorar porque creo que comprometería el ignorar al repositorio, mientras que es importante mantener el archivo make allí.

+4

Fundamentalmente, creo que estás tratando de resolver el problema equivocado. ¿Por qué no modificar tus Makefiles para que funcionen correctamente en ambos entornos? –

+22

Nicholas, incluso si fuad no está utilizando el mejor enfoque para su problema, estoy bastante seguro de que existen razones legítimas para crear ignoramientos que se aplican solo a su copia de trabajo. – allyourcode

+7

Estoy de acuerdo con allyourcode. Un desarrollador (usuario de svn) puede no tener el privilegio o el deseo de cambiar los principios fundamentales. También me gustaría una solución a este problema. Tenemos los archivos de propiedades del entorno registrados en nuestro repositorio. Cuando los cambio de forma local, tengo que desmarcarlos manualmente cuando realizo las comprobaciones. Solo es cuestión de tiempo hasta que me olvide de desmarcarlos.Estoy de acuerdo en que estos archivos NO deberían estar en nuestro repositorio, pero no tengo autoridad para tomar esa decisión, por lo que realmente necesito una solución. – andersonbd1

Respuesta

-3

Utilice svn export para exportar el archivo para que no esté bajo el control de la versión.

http://svnbook.red-bean.com/en/1.0/re10.html

edición: Sin embargo creo que esto tiene que hacerse sobre una base por directorio, por lo que tendría que reorganizar sus archivos un tanto.

No puedo probar esto en este momento, pero ¿le ayudaría un pago escaso?

http://svnbook.red-bean.com/nightly/en/svn.advanced.sparsedirs.html

+0

No funciona, sigue siendo parte del repositorio y aparece como modificado – fuad

+1

No estoy seguro de que sea posible tener archivos exportados dentro de un directorio versionado. –

+0

No estoy seguro de por qué esto ha sido rechazado tan fuertemente. Esto funciona en una serie de situaciones donde otras soluciones no lo hacen. En particular, me funciona porque tenía dos requisitos adicionales. 1) No TortoiseSVN (estoy en OS X) 2) No quiero ajustar mis hábitos para dar cuenta de las listas de cambios. Edición: Probado y trabajando dentro de un directorio versionado por cierto. Puede eliminar el directorio dado (desde el interior del directorio) con "svn update. --set-depth = empty" y luego debe volver a verificarlo con "svn export --force svnrepopath/directory". – radicaledward101

1

La solución segura más cercana que se me ocurre es utilizar una rama personal.

+1

¿Cómo ayuda eso? Cuando desee volver a fusionarse en el enlace troncal, tendrá otro problema (¿peor?): NO fusionará los archivos que desea ignorar. – allyourcode

+1

Puede enviar su cambio personal a su sucursal personal con un mensaje que diga 'no fusionar' y tenga cuidado con ese mensaje cuando se fusione; de ​​todos modos, pronto será enterrado bajo cambios más recientes; incluso puede marcar esa revisión como ya fusionada, lo que debería evitar una fusión accidental. BTW No sabía acerca de las listas de cambios y definitivamente son mejores que una sucursal para ese propósito. – Gleb

10

si utiliza Subversion 1.5.x o superior puede utilizar listas de cambios:

svn cl COMMIT /path/to/project/* 

svn cl NOT_COMMIT /path/to/project/Makefile 

Nota: con el segundo comando Makefile será retirado de la primera lista de cambios. Puedes ignorar la advertencia.

No confirme la segunda lista de cambios.

hacer los envíos por:

svn ci --cl COMMIT -m"<LOG MESSAGE HERE>" 

Importante: Si se compromete sin -Cl opción, todos los cambios se han comprometido

+1

svn cl puede no ser una buena opción, ya que no admite agregar directorios a las listas de cambios. Esto es un problema si hay directorios que usted agregó que desea en su confirmación. Las listas de cambios – allyourcode

+2

parecen útiles, pero no creo que realmente se apliquen aquí. Es un caso de uso diferente. Podrían funcionar si los comandos ignoraban por defecto los archivos que estaban en una lista de cambios, eso sería realmente útil. Pero a menos que esté equivocado, así no es como funciona. Si no especifica una lista de cambios en un comando, entonces se comporta como si las listas de cambios no existieran, ¿correcto? Entonces, incluso si las listas de cambios admiten directorios, no sería una solución ideal. Tendría que mover manualmente los archivos que realmente desea registrar en una lista de cambios. Prefiero marcar manualmente los archivos que NO deseo registrar. – andersonbd1

38

Al igual que con muchos aspectos de la SVN, tortuga hace que sea muy fácil. De hecho, creo que la tortuga realmente agrega características mediante el uso de funciones svn existentes de una manera sistemática. Me doy cuenta de que esta respuesta solo es de Windows, pero tal vez algunas personas son como yo y todavía usan Windows. En la ventana emergente "Buscar modificaciones", simplemente haga clic con el botón derecho en sus archivos y seleccione "Mover a Changelist" -> "ignorar-en-comprometer". Ahora cuando te registras usando tortuga, segmentará tus cambios en las diversas listas de cambios, para que al menos puedas decir visualmente lo que quieres comprometer y lo que no quieres comprometer.

+3

¡Agradable! pero el archivo (y la carpeta) sigue apareciendo como modificado. – Loda

+0

Sí, estoy teniendo el mismo problema. Todo lo que hace es prevenir contra la actualización/compromiso accidental. – ArtB

+2

Como se dijo anteriormente, esto es perfecto, excepto que muestra que el archivo ha sido modificado. Sin embargo, es mejor que tener que desmarcar todos esos archivos cada vez que me comprometo. –

Cuestiones relacionadas