Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I read it and re-read it, and I still don't understand what it does or what advantages it has over... whatever it's supposed to have an advantage over.


One advantage is that you can view your repo's history as a list of new functions being added/removed/changed instead of just diffs of what lines are removed and added. You could add editor support and look at all previous versions of a specific function you're working on.

More specifically, where git mostly looks at code as a collection of files and differences in individual lines, codeq breaks it down into code as a collection of semantic units (function definitions for clojure, possibly class definitions, methods, etc. if other languages are supported). Your version control system would actually understand if a particular method had been moved from a subclass into a parent class, instead of just considering it as lines being deleted here and added elsewhere.


Great explanation. This is one of my biggest frustrations with git.


Here's my take:

I don't think this is an alternative to another product. Instead I think it's something fairly new and interesting: they built a tool which takes your tokenized source code (presumably only in Clojure) and your git log and makes a queryable database out of it. So you could query "who changed my kill_puppies function last year" or other semi-structured things, as opposed to a combination of git blame + ack + ctags.

Like they said in the article, this would be the underpinnings of a larger system; something to manage code deployments, or an IDE, or a code review tool.


Additional analyzers can be added. The vision is definitely not language-specific, and Rich has already done some design work for a Java analyzer.


The vision might not be language-specific, but the implementation will have to be. Furthermore, the language parsers will have to evolve as each language evolves. An advantage of existing versioning systems is that they are language-agnostic. Nevertheless, I am excited to see people pushing in this direction. Keep up the good word!


It appears to be a git enhancement so that you get semantic diffs instead of file line diffs. It also has a query language for browsing code. Much as git is often described as a tool for building a DVCS this would be a tool for building an IDE (it would provide all the code completion and project navigation stuff).


Hmmm, how about...

A smarter and faster version of git-bisect - given an anonymous function, when does the answer returned change working backwards through the codebase?

Or perhaps time warp integration - request a build of project foo but with library bar from the last tagged release version and function baz from a year ago.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: