2009-06-10 16 views
5

Recientemente he decidido tomar la git plunge, y estoy realmente disfrutando el uso de git, incluso en Windows.¿Pueden los git y la subversión jugar bien juntos?

Mi actual proyecto de código abierto lives on subversion, todos los desarrolladores están familiarizados con la subversión, por lo que me gustaría mantener la subversión como la "fuente de la verdad" por el momento.

No obstante, quiero usar git, así que seguí y creé una copia de la fuente on github usando git svn. Todo mi trabajo se hace contra la fuente en github y envío mis cambios a github. Una vez cada dos días también envío mis cambios a svn y rebase.

La importación inicial parecía ir bien, pero ahora cada vez que hago un "git svn rebase" sigo teniendo conflictos, incluso en archivos que no he cambiado en mi repositorio get. Esto me está causando much pain.

Por ejemplo.

 
$ git svn rebase 
First, rewinding head to replay your work on top of it... 
Applying: Added git ignore file 
c:/Users/sam/Desktop/MediaBrowserGit/trunk/.git/rebase-apply/patch:12: trailing 
whitespace. 
*/obj/* 
error: .gitignore: already exists in index 
Using index info to reconstruct a base tree... 
:12: trailing whitespace. 
*/obj/* 
warning: 1 line adds whitespace errors. 
Falling back to patching base and 3-way merge... 
Auto-merging .gitignore 
CONFLICT (add/add): Merge conflict in .gitignore 
Failed to merge in the changes. 
Patch failed at 0001 Added git ignore file 

When you have resolved this problem run "git rebase --continue". 
If you would prefer to skip this patch, instead run "git rebase --skip". 
To restore the original branch and stop rebasing run "git rebase --abort". 

rebase refs/remotes/git-svn: command returned error: 1 

Mis preguntas:

  1. ¿Hay alguna manera de poder contar git para sincronizar a sí misma con SVN utilizando svn como la fuente, por lo que puede comenzar con una pizarra limpia. (exportar más reciente, registrar los cambios y restablecer el svn refs en algún lugar)

  2. ¿Existen sugerencias y trucos para que este escenario funcione de forma coherente?

  3. ¿Debo tener las opciones core.safecrlf and core.autocrlf establecidas en verdadero? Parece que necesitaré un poco de salto de aro.

relacionadas:

Parece conseguir los finales de línea derecha es un poco de un arte negro.

(Soy consciente de que esta pregunta probablemente necesita ser ampliado, por favor, comentarios sobre los lugares que necesitan expandirse)

Respuesta

2

¿Usted está consiguiendo conflictos fin de línea? Git tiene algunas propiedades de configuración que puede configurar para cambiar la forma en que maneja los caracteres de fin de línea. Tengo el siguiente conjunto:

# this makes git NOT attempt to convert line endings on commit and checkout 
core.autocrlf=false 

# this makes git check if the conversion done by autocrlf would be reversible 
# this is probably not required because I do not have autocrlf turned on 
core.safecrlf=true 

en cuenta que estoy en las ventanas, todos mis compañeros de trabajo están en las ventanas y estoy interfaz con SVN través de git-svn. Esta configuración parece ser el truco para mí.

alt text http://www.codinghorror.com/blog/images/works-on-my-machine-starburst.png

+0

veces ... la línea que termina los menos molesto, parece decir algo en la línea de "acallar línea xxx poner fin al conflicto" los que obtienen mí son la falta de línea de poner fin a conflictos. dice que un archivo completo está en estado de conflicto cuando nunca lo toqué ... –

+0

Suena como si estuvieras teniendo conflictos de finalización de línea. Si todo el archivo es incierto esto es probablemente porque algo cambió todas las terminaciones de línea. –

+0

¿Cuál es la mejor práctica cuando se trata de terminaciones de línea, git, svn e interoperabilidad en Windows? –

Cuestiones relacionadas