2010-07-23 23 views
10

Estamos migrando de Perforce a GIT. In forzadamente, había algunos archivos que quisiera en el repositorio, pero no deberían ser revisados ​​por desarrolladores individuales con regularidad. Cosas como eclipse project files. Cada desarrollador puede obtener el archivo .project inicial, pero luego modificarlo ligeramente para su entorno.Marcar un archivo en el repositorio de GIT como temporalmente ignorado

Con P4, podría tomar esos archivos, ponerlos en una lista de cambios por separado y olvidarse de ellos. La sincronización no los sobrescribiría y no se comprometerían cuando haya confirmado mi lista de cambios predeterminada.

¿Hay alguna manera de hacer algo similar con GIT?

me gustaría seguir siendo capaz de "git commit -a"

+0

posible duplicado de [Archivos de configuración específicos de la máquina que comete errores] (http://stackoverflow.com/questions/1396617/committing-machine-specific-configuration-files) – Senseful

+0

Posible duplicado de [¿Puedo 'git commit'? Un archivo e ignórelo ¿cambios en el contenido?] (https://stackoverflow.com/questions/3319479/can-i-git-commit-a-file-and-ignore-its-content-chang es) –

+0

* Me gustaría seguir siendo capaz de "git commit -a" * - ese es precisamente su problema, allí mismo. Con 'git', generalmente no solo comprometes todo, revisas qué ha cambiado con' git status' y 'git diff', decides qué agregar (o a' .gitignore'), y luego comprometes exactamente lo que necesitas . Este flujo de trabajo garantiza que sus confirmaciones no contengan ningún fragmento como objetos revisados ​​accidentalmente en el objeto o archivos temporales, etc. Vea, crear una historia 'git' es contar una historia, y cuanto mejor lo cuente, más útil será. Mejor no mancillarlo con cometer sin sentido-mi-montón-de-basura. – cmaster

Respuesta

5

Si necesita una base común para las personas (.project, .classpath, ...), se puede:

  • versión de la plantilla versión de esos archivos (.project_tpl, .classpath_tpl, ...)
  • utilizar un filter driver para generar, en la salida, los archivos reales (que no serán versionados, y sólo localmente modificado por los desarrolladores)

alt text

(el 'clean' paso durante comprometerse a no haría cualquier cosa por esas plantillas.
Sólo el 'smudge' paso se utiliza aquí, para generar los archivos privados)

Nota: este es un ligero "mal uso" de un controlador de filtro, que se supone para procesar el contenido del archivo solamente, no para generar nuevos.
Pero podría ayudarle en su situación (siempre que su 'smudge' script no sobrescribir los archivos de eclipse ciegamente si llegan a estar ya aquí.)

+1

Así que podría crear una rutina de borrado bastante tonta que elimine .tmpl de cualquier cosa con una extensión .tmpl. Podría agregar .project.tmpl o configuration.xml.tmpl a git y cuando las personas los extraen obtienen .project o configuration.xml Supongo que también podría agregar esos archivos generados a .gitignore y ser dorado. –

+0

@Marc: esa es la idea :) – VonC

10

Usted probablemente está buscando

git update-index --assume-unchanged .project

+0

¿Hay alguna manera de asegurar que esto esté habilitado cuando un usuario clona el repositorio, en lugar de confiar en que recuerden ejecutarlo? – Programster

+0

No es que yo sepa. –

Cuestiones relacionadas