2012-03-07 12 views
10

Estoy creando una herramienta que permitirá a las personas almacenar "soluciones" a las pruebas. Como no quiero reinventar el control de versiones, decidí usar las cosas de árbol/blob/objeto de git: mi idea es crear un objeto de árbol git fuera del directorio de trabajo actual.Crear un árbol git del árbol de trabajo sin tocar el índice?

El problema es que quiero que esta herramienta no toque el estado del repositorio del usuario, excepto para buscar hashes a objetos existentes, por supuesto.

He visto tanto mktree como write-tree, y el primero necesita ls-tree de salida y este último necesita examinar el índice. Ninguno de estos es lo que quiero.

Estoy feliz de sumergirme más profundo y escribir los análogos de estos comandos para el árbol de trabajo, sin embargo, tengo problemas para encontrar herramientas de git de bajo nivel para manipular árboles, blobs y objetos.

Idealmente, el usuario será capaz de ejecutar:

$ git create-tree . 

y git escupir el hash del objeto de árbol recién creado.

+0

No entiendo exactamente qué quieres hacer. ¿Quieres "no tocar el estado del repositorio del usuario", pero al mismo tiempo crear un árbol en el mismo repositorio? ¿Cómo piensas usar ese árbol? – svick

+0

No lo estoy usando como "historial", solo lo estoy usando como una instantánea de una parte del repositorio. No es convencional –

+0

Bien, pero ¿qué vas a hacer con esa instantánea? ¿Cómo vas a sacarlo del repositorio? – svick

Respuesta

11

El uso de git mktree es ciertamente factible. Se lee en ls-tree-texto formateado, pero puede generarlo usted mismo utilizando el mecanismo que desee.

Dicho esto, puede ser más fácil seguir adelante y usar el índice. Después de todo, puede especificar la ubicación que desee como índice, a través de la variable de entorno GIT_INDEX_FILE. Simplemente configure esta var para que apunte a una ubicación temporal, cree su índice como desee, cree su árbol y luego reinicie el env var y elimine el índice temporal.

+0

Excelente. De alguna manera me perdí de que la ubicación del índice fuera configurable. ¡Gracias! –

Cuestiones relacionadas