Estoy tratando de configurar un espejo darcs de un repositorio git. Tengo algo que funciona bien, pero hay un problema importante: si presiono un montón de confirmaciones para el repositorio de git, esas confirmaciones se fusionan en un solo parche de darcs. Realmente quiero asegurarme de que cada commit de git se configure como un único parche de darcs. Apuesto a que esto es posible haciendo algún tipo de git fetch
seguido de un interrogatorio de la copia local de la sucursal remota, pero mi git fu no está a la altura.¿Cómo extraer un compromiso a la vez de un repositorio remoto de git?
Aquí está el código (ksh) estoy usando ahora, más o menos:
git pull -v # pulls all the commits from remote --- bad!
# gets information about only the last commit pulled -- bad!
author="$(git log HEAD^..HEAD --pretty=format:"%an <%ae>")"
logfile=$(mktemp)
git log HEAD^..HEAD --pretty=format:"%s%n%b%n" > $logfile
# add all new files to darcs and record a patchset. this part is OK
darcs add -q --umask=0002 -r .
darcs record -a -A "$author" --logfile="$logfile"
darcs push -a
rm -f $logfile
Mi idea es
- Trate
git fetch
para obtener copia local de la rama remota (no estoy seguro exactamente qué argumentos son necesarios) - De alguna manera interrogar a la copia local para obtener un hash para cada confirmación desde la última operación de duplicación (no tengo ni idea de cómo hacerlo)
- Recorrer todos los hashes, tirando sólo que cometió y que registran el conjunto de parches asociados (estoy bastante seguro de que sabe cómo hacer esto si le ponga las manos en el hash)
daría la bienvenida a cualquiera ayuda descarnado fuera del escenario anterior o sugerencias sobre algo más que debo probar.
Ideas?
Solo como recordatorio, hay un par de nuevas respuestas a continuación que no ha comentado. (Obviamente uno de ellos creo que en realidad responde muy bien a tu pregunta;)) –