2010-04-25 26 views
5

¿Admite Git algún comando que me permita comprometer directamente desde un árbol local/de trabajo en un repositorio remoto? El flujo de trabajo normal requiere un "git add", al menos, para rellenar la base de datos de objetos con copias del contenido del archivo, etc.Escribir directamente en un repositorio remoto de Git, sin agregar objetos a un índice/repositorio local?

Entiendo que este NO es el flujo de trabajo de Git normal y esperado. Pero noté que Git ya admite la descarga directamente desde el repositorio, sin repositorio local ("archivo git"), por lo que parece razonable que pueda haber una operación de carga similar.

De manera alternativa, si no existe tal comando en el núcleo de Git, ¿algún software de terceros admite escrituras remotas directas?

+0

'git archive' tiene un propósito específico que no tiene nada que ver con el uso de repositorios remotos de preferencia a los locales. ¿Por qué quieres hacer esto? –

+0

Marcelo, si entiendo correctamente a Git, siempre copiará los archivos del árbol de trabajo, completamente (aunque comprimidos/deducidos/empaquetados) en la base de datos de objetos. Esto limita la aplicación de Git en situaciones donde el almacenamiento local es limitado, en relación con el tamaño/compresibilidad/flujo del árbol de trabajo. Si Git pudiera evitar el repositorio local, o al menos el objeto local db, esto sería un problema menor. –

+0

no, y lo que está preguntando no tiene ningún sentido. en serio, el espacio en el disco duro es * muy * barato. El salario de un día puede comprar un disco de 500 GB o incluso 1 TB. git repos son muy pequeños. – hasen

Respuesta

2

Por lo que yo sé, no (no directamente, véase mi respuesta completa al final):

Aquí es el official Git data workflow, entre un un repo local y otro remoto:

alt text http://osteele.com/images/2008/git-transport.png

Como puede ver, git add está relacionado con el índice y aún no influirá en su repositorio local.
El todo conjunto de comandos están aquí para ayudar a hacer cumplir alguna publication policies:

alt text http://osteele.com/images/2008/commit-policies.png


La única manera de influir directamente en un acuerdo de recompra a distancia con los cambios locales (como cambios en su directorio de trabajo son totalmente desconocido para Git) sería:

git diff -p origin > diff_not_in_origin.patch 

enviar el parche y ver que el servidor de "origen" tiene algún tipo de trig ger en el lugar que git am dicho parche automáticamente.

+0

Gracias VonC, v. Explicación detallada. Si entiendo 'git am' correctamente, se llama 'git apply' en el back-end. En función de las páginas man, creo que 'git apply' no puede funcionar en un repositorio simple. Entonces, parece que lo mejor que puedo hacer aquí es mover las operaciones DB de índice/objeto (y el uso del disco) al host remoto. –

+0

@Ryan: sí, o puede mover solo * un * archivo con paquete de git (http://stackoverflow.com/questions/2545765/how-can-i-email-someone-a-git-repository/2545784#2545784) y haga su repo desnudo (http://stackoverflow.com/questions/1830701/how-do-i-check-if-a-repository-is-bare/1830712#1830712) allí (con varias posibilidades desde allí: http : //stackoverflow.com/questions/2400043/automatically-pulling-on-remote-server-with-git-push/2400914#2400914). – VonC

1

No he intentado esto por mí mismo, pero podría intentar usar CVS para acceder a su repositorio de git, usando "git cvsserver". Aún necesitaría una copia de trabajo local, pero solo contendría una copia de los archivos del proyecto más algunos metadatos de CVS.

Cuestiones relacionadas