Settings

Theme

Useful GitHub patterns

blog.quickpeople.co.uk

141 points by benilov 12 years ago · 20 comments

Reader

Timothee 12 years ago

GitHub’s functionality around PRs (such as inline commenting, replies, notifications and diffing) is excellent for facilitating code and design discussion

I agree but one thing I've realized recently is how all the history and discussion happening in a PR tend to be lost once the PR is merged. Not completely lost because it's still there in the "closed" PRs, but undiscoverable.

For example, you come across one line that doesn't make sense to you but you sense that there's a reason behind it. 'git blame' will tell you the specific commit but the commit message might not be explicit and you won't be able to find the corresponding pull-request easily.

I mentioned it on Twitter and exchanged with a GitHub employee that seemed to understand my issue. Hopefully they'll improve on that…

  • mineo 12 years ago

    Imho GitHubs pull requests shouldn't be used as a replacement for good commit messages or code comments - GitHub might go away, you might decide you don't like them anymore or whatnot. If you feel like someone raised a question about some part of your code in a PR that does have an answer that's only obvious to you, there's no harm in just adding another commit adding comments to the code (you can even squash that commit into the commit changing the code between merging to master and pushing).

    • Timothee 12 years ago

      I agree. It just doesn't always happen. I'm guilty of leaving too-short commit messages and not enough commenting as much as some of my teammates.

  • thelastnode 12 years ago

    I like to put a summarizing comment in the code for lines that require justification like the ones you mention. That way the discussion happens on GitHub and the conclusion is in the code, where future developers will see it.

    • diggan 12 years ago

      A good thing to think when you start adding documentation to the code is "Am I really writing readable and understandable code right now?". If you answer isn't yes without any hesitation, you usually need to refactor so other people can read your code instead of you needing to comment what you do.

      • thelastnode 12 years ago

        True, but sometimes there isn't a choice, e.g., working with a clowntown library, poorly designed legacy code, etc.

  • prostoalex 12 years ago

    http://phabricator.org/ covers precisely that - code reviews and discussions around commits. The recommended installation includes Arcanist command line tool, which modifies Git commit template to include a URL of the Phabricator code review, test plan, and reviewers' names.

    • alexchamberlain 12 years ago

      Hmmmm I'm not sure it does. The problem (I have experienced) with Phabricator is that it only operates on the diff you upload, so it can lack context of the project as a whole.

  • ndr 12 years ago

    If the change is smalle enough you should be able to understand what that set of commits were for by the name of the branch.

GhotiFish 12 years ago

  4. the sneaky commit
    when do I use it?

    after the code has been reviewed and merged into master
    I need to make a small change (eg a copy change or 
    bugfix) that’s not even worth notifying others about

  what I do

    just push the new commit to master.
ಠ_ಠ That's not something you're supposed to admit in public.

I will note that github has being particularly prolific in getting git advice out there, they're working to educate developers in git, full stop. Though one or two pieces (such as this one) seem to suggest it's github specific advice.

dbaupp 12 years ago

> GitHub deals well with force-pushing to a PR branch, ie it doesn’t lose the comments on the previous commits, etc

This has not been my experience at all, it seems to loose non-line comments always, and line comments sometimes.

---

In any case, I've been doing a lot of work on the Rust language recently, and there is an integration bot ("bors") which detects `r+` comments on the last comment on a pull-request, then runs 13 different configurations of the full test suite (4 platforms, 2 architectures, optimisations on/off, with/without valgrind; although not all combinations of these). If (and only if) all 13 test runs pass, the bot automatically pushes the commits to master.

(Almost) all commits go through bors, with increasingly less common pushes straight to master to get the test suite to pass again after some breakage. (The test suite used to only with 3 configurations for each pull request, so breakage occurred semi-often.)

(An example, https://github.com/mozilla/rust/pull/7693)

When it works, it is really nice; get someone to review, they approve it and the whole process is managed from there, no mistakes possible. (However, apparently the GH api is unreliable, so bors has moments of madness.)

cmwelsh 12 years ago

My employer is similar but a little stricter about how we use GitHub pull requests. All new code goes in via pull request. All pull requests are reviewed by another developer. Almost all pull requests are sent to QA to test acceptance criteria.

The sneaky commit will get you many frowny faces on chat.

It works rather well. Does anyone else work like this?

  • Cyranix 12 years ago

    We're not on GitHub (to my dismay) but my company does use Atlassian Stash, and they've been mimicking GitHub more and more with each update.

    Our development process does include pull requests, and code review is mandatory (with the number of reviewers configurable at some level), as is a successful build from Jenkins. Stash's UI will not permit a merge operation without satisfying those criteria. There's also a restriction on the master branch so the sneaky commit isn't even possible.

  • wizard_2 12 years ago

    My team works like this with a twist. You merge your own pull request. You have developers, designers, pm's, etc to help review the change. You use them if you need them and you take responsibility for your bugs. We'll drop everything to review someone else's pull, and in turn that happens for your own pulls.

    • cmwelsh 12 years ago

      We also merge our own pull requests but there is less concept of code ownership. Bugs can be fixed by anyone who grabs them and assigns them to themselves. Blame may point out the cause and you can send the author a friendly message on Skype so they are aware of your fix. Perhaps they can even mark your fix as peer reviewed while they're at it.

  • bigsassy 12 years ago

    We do the same thing, almost word for word. And yes, it has worked very well for us too.

  • icedchai 12 years ago

    curious. what industry are you in?

    • cmwelsh 12 years ago

      Web development consulting. We are the development team behind multiple funded startups - mercenaries for hire.

d4mi3n 12 years ago

This was actually a pretty decent read. The author lists a number of common use-cases for Github pull requests and how they can be used in practice.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection