Git Watcher

61 views
Skip to first unread message

Demián Andrés Rodriguez

unread,
Jan 28, 2014, 9:33:56 AM1/28/14
to nod...@googlegroups.com, weban...@googlegroups.com, javascr...@googlegroups.com
Buenas, para darle un poco de vida a estos grupos... quería compartirles mi proyecto en el cual estuve trabajando en mi tiempo libre.

Quería probar a ver que onda node-webkit, asi que lo desarrollé usando esa plataforma. (NodeJS + Webkit :P)

https://github.com/demian85/git-watcher

Es una versión mejorada, o al menos eso intenta ser, de git-gui.

Lo mas copado es:
- Real time
- Diff mas lindo con numeros de linea
- Syntax highlighting
- Submodulos en tabs (en mi trabajo diario uso 3)
- No es asquerosa como git-gui

A ver que les parece... ideas de como mejorarla son bienvenidas :)

PD: Solo lo compilé en Linux. Si alguno usa MAC y/o Windows se copa y me lo compila? :P
PD2: Para los pajeros, se ejecuta con tan solo un doble click y sale andando! como en Windows!

Demián Andrés Rodriguez

unread,
Jan 28, 2014, 12:02:54 PM1/28/14
to nod...@googlegroups.com, weban...@googlegroups.com, javascr...@googlegroups.com
Preparé el package.json para publicarlo en npm...

demian@demian-desktop:~/www/projects/git-watcher/build/linux$ npm publish
FATAL ERROR: JS Allocation failed - process out of memory

Cuando resuelva eso, alguno sabe como tener un path al ejecutable segun el SO?

Así como lo tengo, al hacer `npm install -g` agrega al PATH el ejecutable 'gitwatcher', que solo funcionaría en Linux.


2014-01-28 Demián Andrés Rodriguez <demi...@gmail.com>

Demián Andrés Rodriguez

unread,
Jan 28, 2014, 1:05:24 PM1/28/14
to weban...@googlegroups.com, nod...@googlegroups.com, javascr...@googlegroups.com
Ah pero vos decis de subir todo el source a npm. 
Yo queria subir solo el binario, porque el tema es que si lo tenes que compilar vos necesitas bajarte node-webkit y nw-gyp para recompilar cada dependencia, es un bardo... Fijate en el readme puse como es.

Se te ocurre una forma de distribuirlo todo por npm sin que el usuario tenga que bajarse 200mb?


2014-01-28 Tio Oscar <tio...@gmail.com>
Se que en el package.json le podes basar el parametro "bin", y npm se encarga de copiarlo al directorio bin del sistema, pero siempre vi scritps que llamaban a node, onda

#!/usr/bin/env node

en este caso si es un binario en serio no pasa nada, acordate que tu app estaría en %NODEROOT%/lib/node_modules/$APP.

Npm es mas poderoso de lo que parece, en realidad vos tendrías que ver como hacer el makefile para que sea directamente npm el que compile, genere el bin y de ahi lo mueve solo al direcotorio ejecutable,.



--
--
-------------------------------------------------------------------
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/webandbeer?hl=es.
El blog del grupo
http://www.webandbeer.com.ar
---
Has recibido este mensaje porque estás suscrito al grupo "webandbeer" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a webandbeer+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



--
Exos ~ Programador, hacker y filósofo
web: http://blog.exodica.com.ar
Linked'in: http://www.linkedin.com/in/ogexos
Twitter: @exos, Indeti.ca: @exos
Tels: [+54 11] 6385-EXOS (3967) - [+54 9 11] 6133-2442

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d-- s++:* a- C+++$ UBL+++$ P(-) L+++$ !E--- W+++$ !N !o K-? !w--- !O !M-- V? PS+++@ !PE Y+(++) PGP++ !t--- !5 X++ R(+) tv--(!) b- DI D-- G e@ h>++ r--- y*>+++++
------END GEEK CODE BLOCK------

--
--
-------------------------------------------------------------------
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/webandbeer?hl=es.
El blog del grupo
http://www.webandbeer.com.ar
---
Has recibido este mensaje porque estás suscrito al grupo "webandbeer" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a webandbeer+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Demián Andrés Rodriguez

unread,
Jan 28, 2014, 8:18:54 PM1/28/14
to weban...@googlegroups.com, nod...@googlegroups.com, javascr...@googlegroups.com
Eso lo tengo perfectamente claro, pero el problema es que yo tengo modulos propios NO publicados en npm (no tengo un registro privado, me regalás uno?), y los cuales quiero usar con `require('pepito')` y vez de `require('./lib/pepito')` porque me hace ruido y es feo.

Si te fijas mi .gitignore


resources/node_modules/git-watcher/node_modules
build/*

'git-watcher' es mi modulo propio. Aunque si, también queda fea esa estructura. 

Por otro lado, el mundo de los makefiles lo detesto y ni idea como es, tendré que investigar más. 

Además, la app pesa 40mb, no estoy seguro de que se puedan subir packages tan grandes a npm, e incluso como no está pensado para ser usado como un modulo de node, no me termina de cerrar.

Suponete que lo suba a npm, tendría que agregar node-webkit y nw-gyp como dependencias y armar scripts mágicos que se encarguen de recompilar los modulos de node, etc... Además de que node-webkit pesa 80mb sin comprimir.


2014-01-28 Tio Oscar <tio...@gmail.com>
Las dependencias justamente las trabaja npm, volviste a cometer el error de incluir node_modules y meter las libs ahi.

node_modules lo tenes SIEMPRE que ignorar, justamente npm maneja las dependencias a la hora de instalar tu paquete, por eso se suele usar el directorio "lib" para
las librerias propias de tu app.

Por otro lado, no subis los binarios porque justamente se compila segun la distro/SO, fijate de instalar hiredis, mysql, etc. Lo que hace es compilar en cada instalación.

Ahi lamentablemente te tenés que meter al oscuro mundo de los makefiles

Demián Andrés Rodriguez

unread,
Jan 28, 2014, 10:25:28 PM1/28/14
to weban...@googlegroups.com, nod...@googlegroups.com, javascr...@googlegroups.com
Cambié la estructura de la app para que sea mas legible. 
Puse en ./lib lo mio y actualicé el package.json para que sea un híbrido y sirva para npm y node-webkit a la vez. Ahora ejecutas npm install en el root de la app y se instalan las deps.

Despues, hice algo medio raro, metí un package.json con la propiedad "bin": {"gitw"./run.sh"} junto con el binario. Eso te permite hacer `npm link` en la carpeta donde pusiste el binario y te agrega un link al ejecutable en /usr/local/bin.
Para correr la app tan solo ejecutas `gitw`


2014-01-28 Tio Oscar <tio...@gmail.com>
Se la banca, abria que ver cuanto pesan otras cosas mas pesadas.

Sobre los modulos no publicados... publicalos :P te registras desde consola y los subís con npm publish :P, mira mi user:

https://npmjs.org/~exos

sobre los makefiles, si, son una verga. Por otro lado no es una cuestion de que sea un modulo o no (ya te lo dije), es lo mismo que con Python, las aplicaciones hechas en python suelen estar en /usr/lib/python/... igual, con node lo mismo, tu aplicación vive en /usr/lib/node/node_modules, pero los binarios (normalmente scripts) viven en /usr/bin/


--
Exos ~ Programador, hacker y filósofo
web: http://blog.exodica.com.ar
Linked'in: http://www.linkedin.com/in/ogexos
Twitter: @exos, Indeti.ca: @exos
Tels: [+54 11] 6385-EXOS (3967) - [+54 9 11] 6133-2442

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d-- s++:* a- C+++$ UBL+++$ P(-) L+++$ !E--- W+++$ !N !o K-? !w--- !O !M-- V? PS+++@ !PE Y+(++) PGP++ !t--- !5 X++ R(+) tv--(!) b- DI D-- G e@ h>++ r--- y*>+++++
------END GEEK CODE BLOCK------

Demián Andrés Rodriguez

unread,
Feb 8, 2014, 8:06:23 PM2/8/14
to weban...@googlegroups.com, nod...@googlegroups.com, javascr...@googlegroups.com
Bueno a nadie le interesa porque son todos putos, pero hice ALTOS cambios en la app y quedó hermosa :P

Pruebenla, ahora se abre con tan solo doble click! como en Windows! 


Crédito a Mike por el hosting.

Dario Seminara

unread,
Feb 9, 2014, 5:16:20 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Ummm, esto me me preocupa, Demian publico su proyecto con JS y genero actividad en la lista (salvo con los mensajes que tuvo que postear el), porque no se puede dar mas dinamismo a esto ?, un dia de estos comentare de mi proyecto (tambien en JS)

Yo en particular la verdad no estoy muy interesado en git-watcher, como usuario, pero como developer me interesan detalles del desarrollo de la herramienta, se compila ?, como es eso?, es web ?

A mi me gustaria que aparezcan mas gente que se cope con JS en esta lista
Saludos!,

Dario Seminara

unread,
Feb 9, 2014, 5:17:05 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Correccion: *NO* genero actividad en la lista :(, 

Angel Java Lopez

unread,
Feb 9, 2014, 5:23:55 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com
Hola gente!

Todo bien, pero no estan mandando emails en espaniol a la lista nodejs en ingles? O me estoy equivocando al leer uno de los destinatarios?


--
Has recibido este mensaje porque estás suscrito al grupo "Javascript Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a javascript-ar...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a javascr...@googlegroups.com.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/javascript-arg/f4ff9e49-1668-4555-bbc4-abd3faaeacbb%40googlegroups.com.

Demián Andrés Rodriguez

unread,
Feb 9, 2014, 5:29:50 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Y a mi como developer me interesa saber si usas alguna app para git o solamente te manejas con la consola. 
Yo solía usar solo git commit -am "fix", pero resultó ser muy villero para la empresa donde laburo hoy en día :P

node-webkit es una plataforma hibrida que combina nodejs + webkit y haces una desktop app con html+css+javascript+nodejs. 
Está en desarrollo todavía y el proceso para distribuir tu app es medio tedioso, aunque te lo venden como "armate un zip y listo". Los modulos de node con bindings a libs en c++ hay que recompilarlos para node-webkit...
Es medio bizarra la combinacion porque hay ciertas cosas que no quedan claras, como la colisión de nombres y si manejas mal las referencias y le pasas un dom node a una función definida en una lib de node crashea todo :P


2014-02-09 19:17 GMT-03:00 Dario Seminara <dar...@gmail.com>:

--
Has recibido este mensaje porque estás suscrito al grupo "Javascript Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a javascript-ar...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a javascr...@googlegroups.com.

Demián Andrés Rodriguez

unread,
Feb 9, 2014, 5:30:13 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com
Cierto, estaba enviando mails al grupo de nodejs en english :P


Dario Seminara

unread,
Feb 9, 2014, 5:53:12 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Yo utilizo git en la consola, la mayoria de usuarios acostumbrados a git que conozco y que usan muchas de sus features, usan la consola, incluso en windows existe git-bash, que es lo que uso si tengo que trabajar con git en windows

Tambien existen varias UI como gitg, gitk para linux y GitExtensions para windows, tambien se que hay un app creada por github, pero nunca la use y no se como es. Igual como dijiste anterioremente son medio flojas las apps que hay, estoy seguro que si la mayoria usa git en la consola es porque todavia no salio una UI realmente buena, me alegra que exista un proyecto como git-watcher que tenga ese objetivo aunque parece una meta compleja

Otra razon por la que , creo yo, se usa mucho la consola es porque git siendo una herramienta de por si compleja, (ok, si dominas la herramienta y la entendes te parece lo mas simple y es super util) y todos los manuales y tutoriales que se ven por ahi te tiran directamente comandos de consola, sobre todo para las tareas mas o menos avazadas como hacer un filter , rebasear solo una parte de un branch a otro o hacer bisect

Si bien vi unos pocos tutoriales de git que te muestran como hacer cosas en una UI, son contados con los dedos de la mano y no te ensenian toooodo lo que puede hacer git (o incluso hay front-ends que son muuuy limitados como TortoiseGIT con los cuales tenes que hacer muchas cosas en la consola si o si)

Mi opinion, como usuario, es que una UI de GIT tiene que ser muy grafica mostrando la informacion (en eso gitg y gitextensions parecen ser buenos), en lo posible, tiene que permitir hacer cualquier cosa que se pueda hacer en la consola, pero explotando todo lo que se pueda lograr en una interfaz grafica (desarrollar algo asi me suena a que es un arduo trabajo) y sencillo para los que vienen de la consola, nada de "uh, como se hace un branch con esto... bueno, switcheo a la consola" 

Con lo de node-webkit, la verdad no lo conocia, te permite usar HTML,CSS y JS para desarollar desktop apps ? parece ser una de esas cosas que un querria tener en el toolbox

Demián Andrés Rodriguez

unread,
Feb 9, 2014, 6:04:51 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Es que claramente no todo se puede y debe hacer mediante una UI. 

Yo solo uso git-gui (la que viene por default) para ver lo que voy a comitear, porque ya me ha pasado varias veces, y no soy el unico, que terminas mandando fruta o algun <console.log> por algun lado. Es una buena practica ver los cambios que vas a meter, la consola no te dice nada.
A veces hasta te olvidas que tocaste o hiciste un cambio y volviste atrás pero te faltó borrar algo que quedó demas y cagaste...

Salvo git-commit, el resto de los comandos los hago en consola, git-push, git-pull, git-checkout, git-reset, etc.


Demián Andrés Rodriguez

unread,
Feb 9, 2014, 6:08:01 PM2/9/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Y otra app fea pero "útil" es el gitk, para hacer code reviews y ver el historial de commits, merges, etc. 

Tambien me gustaría hacer algo asi pero es mucho laburo y la api de git para nodejs es un dolor de huevos porque es un port de libgit c++ asi a lo bestia, y para hacer una operacion sencilla como un commit terminas llamando a 6 funciones con 6 callbacks.

Dario Seminara

unread,
Feb 10, 2014, 5:55:57 PM2/10/14
to javascr...@googlegroups.com, weban...@googlegroups.com, nod...@googlegroups.com
Lo de los callbacks. no se puede amenizar usando promises?

Demián Andrés Rodriguez

unread,
Feb 10, 2014, 5:57:57 PM2/10/14
to javascr...@googlegroups.com, nod...@googlegroups.com, weban...@googlegroups.com

Si. Avisale al que hizo el port de la lib que los implemente o tengo que hacer un wrapper para todo. Alta paja.
Igual la mitad apenas está documentado.

José F. Romaniello

unread,
Feb 10, 2014, 6:51:45 PM2/10/14
to javascr...@googlegroups.com

No se si este foro tiene un código de conducta, pero al menos estaría bueno que no nos putiemos, no agrega nada.

No hay necesidad de "alta paja", "son todos putos". Si no te contesta nadie no hace falta agredir, en mi experiencia las cosas que haces oss hoy, a alguien le puede parecer útil después.

Demián Andrés Rodriguez

unread,
Feb 10, 2014, 10:05:36 PM2/10/14
to javascr...@googlegroups.com
Es que a la mitad de la gente de la lista los conozco y nos puteamos diariamente de onda :P


Javier Alvarez

unread,
Feb 11, 2014, 8:49:22 AM2/11/14
to weban...@googlegroups.com, javascr...@googlegroups.com, nod...@googlegroups.com
Que tanta vuelta... Sublime Text Git:


Muy bueno el programa.
Javier Alejandro Alvarez
Follow me: @neiker

Demián Andrés Rodriguez

unread,
Feb 11, 2014, 8:56:23 AM2/11/14
to weban...@googlegroups.com, javascr...@googlegroups.com, nod...@googlegroups.com
Ese diff es un asco y los numeros confunden, yo jamas entendí que garcha es 

@@ -37,11 +37,11 @@ 

jamas me sirvió de nada...

Angel Java Lopez

unread,
Feb 11, 2014, 9:09:39 AM2/11/14
to javascr...@googlegroups.com
Jaja!

Si, apoyo la mocion del bueno de @jfroma

Aunque se ve que Demian habla asi, no todos nos acostumbramos a ese trato. Algo mas neutro, mejor

Grande node-webkit! No sabia que los modulos en C debian compilarse de nuevo o algo asi. Gracias por la info.

Se podra hacer el programa sin modulos en C? En donde se usan?

Nos leemos!

Angel "Java" Lopez
@ajlopez


2014-02-10 20:51 GMT-03:00 José F. Romaniello <jfroma...@gmail.com>:

Dario Seminara

unread,
Feb 11, 2014, 9:19:26 AM2/11/14
to javascr...@googlegroups.com
Los esta usando porque son los binding para libgit, no existira una libreria para manejar repos git hecha en JS puro?  (algo similar ya existe en ruby: Grit)

Angel Java Lopez

unread,
Feb 11, 2014, 9:32:16 AM2/11/14
to javascr...@googlegroups.com
Ah! Interesante...

Un poco de google me llevo a


Donde hay mencionados (puede que haya mas mencionados ahi, solo me detuve un poco por ahi)


algunos se inspiraron en grit
parece que todos necesitan el CLI de git en algun momento

Angel "Java" Lopez
@ajlopez



Demián Andrés Rodriguez

unread,
Feb 11, 2014, 9:56:27 AM2/11/14
to javascr...@googlegroups.com
Las limitaciones de usar los comandos de git para hacer una UI son varias por ahora:

- No puedo hacer un amend commit, dado que necesito una especie de sandbox para alegir los files que van al index para luego hacer git commit --amend. Puedo hacerlo en forma casera y a lo bestia con git reset --soft HEAD^, pero si salgo de la aplicacion perdí el último commit...
- Me enteré que muchos aca en el laburo agregan al index partes de un file, por lineas o rangos. Yo jamás lo use eso y con la consola solo se hace en modo interactivo, no veo forma de decirle al git-add "agregame la linea 26 y 89 de este file"


Dario Seminara

unread,
Feb 11, 2014, 10:16:33 AM2/11/14
to javascr...@googlegroups.com
Tenes el git-add -p, pero requiere interaccion en la consola

Para hacer lo de agregar tal linea, la unico que se me ocurre es hacerlo a mano, (leer la linea del archivo, y escribirla directamente al indice), de todas maneras estoy de acuerdo en que depender de git en la command line no esta muy bueno.
Ademas, suena bien la idea de una herramienta que pueda hacer cosas con repos de git, sin depender de que este instalado git en la command line, y si eso apunta a que puede ser multiplataforma mejor :)

Yo le daria un vistazo a los links que publico @ajlopez

Angel Java Lopez

unread,
Feb 11, 2014, 3:47:36 PM2/11/14
to javascr...@googlegroups.com
Recien llego a mi Twitter

Inline image 1


no la conocia, parece interesante. Igual necesita git instalado

Angel "Java" Lopez
@ajlopez


Dario Seminara

unread,
Feb 11, 2014, 5:25:54 PM2/11/14
to javascr...@googlegroups.com
Seria interesante una implementacion de git hecha en puro js, que tal esto? : 

Si se ve incompleta, talvez se pueda completar, o al menos aprender de ese codigo lo necesario para implementar una version propia (por ej, el uso de zlib para leer los blobs)

Martín Ciparelli

unread,
Feb 11, 2014, 5:36:35 PM2/11/14
to javascr...@googlegroups.com

Demián Andrés Rodriguez

unread,
Feb 11, 2014, 6:39:49 PM2/11/14
to javascr...@googlegroups.com
Ya conocia implementaciones de git en js pero no termino de entender para que sirve O.o

Sobre git-js.. es solo una capa de abstracción sobre child_process.exec("git [...]")

Encima la lib git-utils no es async y el método getStatus tarda años para repositorios gigantes. Al final resultó 1000% mas óptimo parsear manualmente el output de 'git status --porcelain -zb'


Angel Java Lopez

unread,
Feb 12, 2014, 5:57:07 AM2/12/14
to javascr...@googlegroups.com
El mencionado por @dseminara


tiene repo en
algo abandonado

No vi que fuera un wrapper de comando git. Tiene varias cosas implementadas directamente accediendo al file system. Donde usa exec git?

Por otro lado, Tim Caswell tiene un kickstarter, no se si nombro en este thread


En construccion
El codigo anterior que tenia

Angel "Java" Lopez
@ajlopez



Reply all
Reply to author
Forward
0 new messages