Hacker News new | past | comments | ask | show | jobs | submit login
Git-appraise: Distributed code review system for Git repos (github.com/google)
189 points by ktt on Dec 14, 2015 | hide | past | favorite | 26 comments

Upvoted because this looks cool and I'm definitely your target audience. The README doesn't give me a great sense of how this actually works, though. A 5 minute video, or even a hypothetical example with some screenshots intermixed, would help a lot.

This seems like an awesome tool. Sadly my comment has more to do with Go, as I'm new to the language and trying to learn.

When building a tool that uses git I'm wondering if it is better practice to use git2go (https://github.com/libgit2/git2go) or to do what this author did which is wrap the git command line tool: https://github.com/google/git-appraise/blob/master/repositor...

Nothing wrong with calling the git command directly since this isn't an app that needs to scale past 1 human user. It could be some busy work in the future to translate it all into git2go, I have a project like this. It's a personal tool I use to write my journal and it wraps git to manage the entry data by placing it in a git repository.

I always thought that built-in comments and docs are an excellent feature of Fossil [1], and wished git had it.

Kudos to the author.

[1]: http://www.fossil-scm.org

What's interesting is that this project seems to be using itself for code review.

Clone the repo and then fetch notes manually:

    git fetch origin refs/notes/*:refs/notes/*
After installing it through "go get" check existing code reviews with "git appraise list".

There are notes from Jenkins and comments from developers as far as I can see.

Seems to be a little bit slow on my computer but the idea is really brilliant.

I can’t find any mention of GUI frontends for git-appraise.

While I prefer to write code in my terminal, I like to switch settings for reviewing code — with GitHub’s Pull Requests, I can just do it in the browser. Can I use git-appraise in my browser? Is there a stand-alone tool?

Looks like it's a standalone cli tool but I imagine you could get it to work with something like kdiff

How does this compare w.r.t Gerrit?

I see that an advantage is that it doesn't require server-side setup. But wouldn't one require some sort of central repo to coordinate code reviews and CI tests?

This seems to be extremely different to Gerrit. Gerrit requires a centralised server which acts in place of a regular git server. It has its own database, distinct from git, and adds the notion of a "Change ID". Generally you do your review through a web interface. It's all quite clunky, but it does its job very well.

This is distributed but more importantly it looks like it's more entangled/in-tune with git. It says it uses git notes [1], which appeals to me; they're a feature that are basically useless on their own, but seem to be included exactly for the use of something like git-appraise.

Regarding your comment about a central repo, I'd guess the idea is you use git-appraise like you use git today; it's decentralised in the technical layers, but you assign "central" repo in the human workflow layer.

[1] http://git-scm.com/docs/git-notes

I don't see why. Sure, the CI server would have to be involved in some way to run the tests, but a central server for "coordinating" code review is unnecessary, IMO. Now, as github (and others) have shown, a central place for code review is nice, but as long as the developers had tools that allowed them to work with the code reviews inside their repos, I don't see why a centralized service is necessary.

I asked the Gerrit devs for their opinion: because the git appraise solution doesn't support rebasing it doesn't work well with the idea of being able to fix commits and repush.


Maybe the gerrit developers will be motivated to support this. There has been talk of offline review/moving all metadata to git for some time now.

The point is that you can do reviews locally, push them, and other reviews will fetch. Just as git does not require a central authority, neither does this implementation.

That being said you could still write a web frontend to all of this, ala gerrit.

It does the code reviews in a distributed way. It just needs a central Git repo, but not a central code review server.

CI tests could work in a similar way! Each CI runner is polling for new commits, running tests against them, and pushing the results as git-notes in the Git repo, just like for the reviews.

To me it looks like something that could be used to implement Gerrit, but it doesn't come close to what Gerrit offers, having used it for a few years now. Gerrit is excellent at what it does.

I like Gerrit features, but it always seemed too complicated to integrate into usual coding workflow, especially with people always even complaining about git being "hard to use". This tools seems simpler compared to Gerrit, and more flexible compared to GitHub pull requests.

I would appreciate advices on introducing Gerrit to my team and make it somehow transparent in development workflow.

I wrote about Gerrit a few years ago:


I recorded a video showing how it worked together:


Once you understand the workflow it's actually easy to adopt. The biggest challenge is getting people to think in terms of push requests instead of pull requests. If you configure the remote as "git config push HEAD:refs/for/master" then it becomes as simple as doing "git push" to upload changes.

Seems solid, are there any editors for this?

There's an Eclipse plugin, if that's what you mean: https://github.com/google/git-appraise-eclipse

Nice ! I guess storing issues and comments is possible too ?

Yes, this includes comments.

Damn, feeling completely dumb. I have installed the tool, and am trying it on one of my projects. After I do some local commits `git-appraise request` returns `There are no commits included in the review request`. Is there any tutorial or more documentation available somewhere? Or do I need to dig into its code to find the issue?

Trying to use this and I get "exit status 128" for all reasonable invocations of "git appraise request ...".

Looks seriously cool and I am sad!

How does this handle identity? For example, what's preventing me from just changing my name and reviewing myself?

Probably the same way that git handles author and committer fields see: https://news.ycombinator.com/item?id=10005577

Why does anyone part attention to your review anyway? Reputation. No one's going to trust a review from someone that doesn't have a track record. If you want to get a sock puppet identity with that much reputation by making useful contributions through it, well, go ahead. :) xkcd.com/810/

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