2011-08-10 18 views
5

Aquí es lo que me gusta hacer en su concepto:Usando git para liberar a Node.js

Node.js "gancho" a un repositorio Git particular, para que pueda hacer una solicitud como/84de7e8d8ce33/foo y el servidor (si es necesario) verifica commit 84de7e8d8ce33, inicia otro node.js en los archivos que acaba de verificar y pasa "/ foo" a ese nuevo servidor. Por supuesto, el servidor principal realiza un seguimiento de los compromisos que ya conoce.

Básicamente, sólo estoy tratando de simplificar el proceso de liberación, por lo que el mismo servidor que hace la magia Git anterior también servirá un archivo index.html similar que consiste casi enteramente en

<script src="/84de7e8d8ce33/app.js"></script> 

Mi preguntas:

  1. ¿Qué tan mala idea es esta?
  2. ¿Hay alguna técnica anterior, alguna biblioteca o marco que ya lo haga?
  3. ¿Existe una alternativa? De alguna manera tengo una rama de versión, le digo a node.js qué se compromete a usar y lo dejo ir.
  4. ¿Hay alguna forma incorporada de mantener "comprobadas" múltiples confirmaciones (o al menos visibles como archivos ordinarios de alguna manera) al mismo tiempo?

(Tengo una pregunta subsidiaria sobre la forma de comunicarse, de mí, como el encargado del lanzamiento, al servidor el hecho de que 84de7e8d8ce33 es ahora la versión en vivo. En este momento, estoy pensando, memcached, pero Estoy abierto a otras sugerencias.)

+1

Puede encontrar [Git.js] (https://github.com/danlucraft/git.js), una implementación de Git en JavaScript, útil para su tarea. –

Respuesta

3

No parece una mala idea. Yo intente usar primero https://github.com/libgit2/node-gitteh

Además de tener un nombre lindo, es

  • debe ser más rápido que los bombardeos a cabo a git
  • tiene una API javascripty

me funciono en una proceso separado del servidor web, usando node-redis y/o dnode para comunicarse.

Editar: He encontrado the docs, que aparece en la parte inferior de la README. No obstante, ¡hasta después de que miré un ejemplo y jugué con él en el nodo repl! Es bastante agradable. Pude hurgar y sacar un blob de mi repositorio. También funciona en .git, no es un árbol de trabajo, por lo que es posible que puedas tener múltiples commits posibles sin tener varias copias del repositorio.

+0

Estoy aceptando esta respuesta, pero quiero señalar que decir "No suena nada loco" a alguien que * no * ha dicho algo como "¿Eso suena loco?" puede poner a esa persona un poco nerviosa. – Malvolio

+0

Vaya. s/loco/mala idea /. No quise mezclarlos. Creo que es porque he usado mal y he estado cerca de otros que han usado mal la palabra * crazy * mucho. ¡Me alegra que no todos tomen la palabra tan a la ligera! –

+0

Un amigo mío organizó su luna de miel en una pequeña isla caribeña. Lo último que le dijo la agente de viajes fue: "Y no se preocupe, no hay problemas con la electricidad". No es de extrañar, el poder estuvo fuera durante toda la semana que estuvieron allí. La gente me dice de la nada "oh no, no estás loco". y empiezo a pensar ... – Malvolio