Usamos tortoise hg con Horno. En mi proyecto vs 2010 C# hay algunos archivos que son parte del repositorio, pero me gustaría torturarlos para que los ignore cuando realice una confirmación. Por ejemplo, digamos en una pantalla de inicio de sesión, puedo codificar el ID de usuario, la contraseña para la prueba. Realmente no quiero que se considere este archivo durante una confirmación. Entiendo el archivo .hgignore pero esto realmente funciona para archivos que no son parte del repositorio. ¿Algún truco en tortuga hg a ignorar los archivos que forman parte del informe? (para que no se muestren como modificados (M) durante una confirmación). Graciascómo ignorar archivos en horno/mercurial usando tortuga hg "que son parte del repositorio"
Respuesta
Siempre uso una combinación de .hgignore y BeforeBuild
(en el archivo .csproj) para cosas como esta.
En uno de mis proyectos favoritos, tengo la siguiente configuración:
App.config
contiene mi verdadero identificador de usuario y la contraseña codificada para la prueba.
App.config.example
es idéntico, pero con datos falsos como "dummy_user" y "dummy_pw".
App.config
es no parte del repositorio, y se ignora (en .hgignore
).
App.config.example
es parte del repositorio.
Entonces, he lo siguiente en el objetivo BeforeBuild
en el archivo .csproj de mi solución:
<Target Name="BeforeBuild">
<Copy
Condition="!Exists('App.config')"
SourceFiles="App.config.example"
DestinationFiles="App.config"/>
</Target>
Todo esto unido tiene el siguiente efecto:
- el archivo de configuración con lo real los datos nunca se pueden asignar accidentalmente al repositorio, porque se ignora
- el repositorio solo contiene el archivo de configuración con los datos de ejemplo
- si alguien más clona el repositorio en su máquina, no tendrá el archivo de configuración "real" ... pero si falta, se creará automáticamente antes de la primera compilación de Visual Studio/MSBuild simplemente copiando el archivo
.example
(y luego puede simplemente poner su datos de inicio de sesión real en el archivoApp.config
recién creado). - si un
App.config
con datos de usuario codificados reales ya existe, no se sobrescribirán cuando se construye porque el evento BeforeBuild sólo ocurrirá siApp.config
hace no ya existen
Cuando realiza una confirmación de TortoiseHG, hay una lista de archivos con casillas de verificación. Deseleccione los archivos que no quiere que se agreguen.
O, en la línea de comando, realice una confirmación del formulario hg commit --exclude "pattern"
, donde se define el patrón en la página de manual de hg.
Sí. Eso es lo que hago ahora, pero a veces me olvido de desmarcar esa casilla que mencionas ya que el archivo que no quiero comprometer está enterrado en el medio de un montón de archivos que quiero comprometer, y de ahí esta pregunta :-). gracias – Gullu
@Gullu: He encontrado que la línea de comandos es el mejor enfoque para operaciones más complicadas en hg. Sugeriría un archivo "safecommit.bat" que excluye los archivos que tienen los datos confidenciales. –
bien. Si nada más funciona, me aventuraré en el lado oscuro (línea de comando). gracias – Gullu
Siempre se puede utilizar hg forget.
La respuesta de Christian es la correcta, pero quiero mencionar que TortoiseHg admite lo que desee con su Auto Exclude List.
Un problema con una lista de exclusión es que no puede funcionar con fusiones: debe comprometer todos los archivos cuando se fusiona, por lo que tendrá que bailar un poco con shelve, merge, commit y unshelve.
¿Admite comodines? Una simple prueba indica que no es así y debo enumerar cada archivo por nombre, pero quería asegurarme de que no me faltaba algo. – Ben
- 1. ¿Cómo ignorar los archivos que están en el repositorio?
- 2. hg ¿eliminar el directorio del repositorio?
- 3. Ignorar archivos que ya están en un repositorio SIN eliminarlos
- 4. ¿Cómo hacer que Hg/Git sea un repositorio remoto?
- 5. ¿Puede svn "ignorar" los archivos eliminados o eliminarlos del repositorio?
- 6. Usando hg revertir en Mercurial
- 7. hg - Ignorar directorio en el directorio raíz
- 8. Cómo eliminar el repositorio Hg local
- 9. ¿Cómo ignorar los archivos ocultos usando os.listdir()?
- 10. Tortuga: ¿es posible ignorar la nueva carpeta antes de enviarla?
- 11. ¿Puede Roxygen ignorar las funciones que no son del usuario?
- 12. TortoiseSVN - Ignorar archivos dentro de una carpeta que ya está en el repositorio
- 13. ¿Copia parte del repositorio SVN a nuevo repositorio?
- 14. .hgignore sintaxis por ignorar solo archivos, no directorios?
- 15. Cómo ignorar estos archivos
- 16. usando gitignore para ignorar (pero no eliminar) archivos
- 17. ¿Cómo eliminar archivos del repositorio de GitHub?
- 18. Git: Ignorar archivos rastreados
- 19. Cómo convertir un solo repositorio hg en varios repositorios
- 20. Cómo ignorar archivos que comienzan con # en git
- 21. ¿Cómo agregar archivos * .a en el repositorio usando svnX?
- 22. hg local ignore
- 23. Mostrar etiquetas para el repositorio hg remoto
- 24. ¿Cómo evito que un usuario de subversión acceda a una parte del repositorio?
- 25. Knockout con ko.toJSON - cómo ignorar las propiedades que son nulas
- 26. ¿Cómo comprime mercurial los archivos en el repositorio?
- 27. Mercurial: enumere archivos "hg diff"
- 28. ¿Cómo establecer permisos para que dos usuarios puedan trabajar en el mismo repositorio de hg?
- 29. Las funciones de Microsoft, ¿son parte del estándar C++ ahora?
- 30. Eliminar e ignorar todos los archivos que tienen una extensión desde un repositorio git
Buena solución. gracias – Gullu
+1 usando la herramienta correcta para el trabajo –