{"thread":{"id":"35101","subject":"[ANNOUNCE] git-related-0.1","startedAt":"2013-10-10T21:43:21Z","lastAt":"2013-10-10T23:04:13Z","messageCount":4,"participants":["Felipe Contreras","Andrew Ardill"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"228718","messageId":"CAMP44s0wPzV6FkfON4zazkOWqTB0qbpdEtruHD01NybtiK6-Og@mail.gmail.com","threadId":"35101","inReplyTo":null,"subject":"[ANNOUNCE] git-related-0.1","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2013-10-10T21:43:21Z","receivedAt":"2013-10-10T21:43:21Z","isPatch":false,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Hi,\n\nThis is basically the same as my original series[1] which was dropped\nfor no good reasons, plus all the other features I also sent patches\nfor.\n\nThis is way superior to the current git-contacts that sits on the contrib area.\n\nFor the uninitiated, this tool finds people that might be interested\nin a patch, by going back through the history for each single hunk\nmodified, and finding people that reviewed, acknowledged, signed, or\nauthored the code the patch is modifying.\n\nIt does this by running `git blame` incrementally on each hunk, and\nthen parsing the commit message. After gathering all the relevant\npeople, it groups them to show what exactly was their role when the\nparticipated in the development of the relevant commit, and on how\nmany relevant commits they participated. They are only displayed if\nthey pass a minimum threshold of participation.\n\nFor example:\n\n  % git related master..fc/transport/improv\n  Junio C Hamano <gitster@pobox.com> (signer: 90%, author: 5%)\n  Felipe Contreras <felipe.contreras@gmail.com> (author: 25%, reviewer: 2%)\n  Sverre Rabbelier <srabbelier@gmail.com> (author: 17%, acker: 2%, signer: 7%)\n  Jeff King <peff@peff.net> (acker: 17%, author: 10%)\n  Shawn O. Pearce <spearce@spearce.org> (author: 5%, signer: 2%, cced: 2%)\n  Elijah Newren <newren@gmail.com> (author: 10%)\n\nIn addition, it has an option to output the list of commits, instead\nof the contributors, which allows you to easily find out the previous\nchanges to the lines your patches modify.\n\n  % git related -c master..fc/transport/improv\n  99d9ec0 Merge branch 'fc/transport-helper-no-refspec'\n  67c9c78 transport-helper: barf when user tries old:new\n  0460ed2 documentation: trivial style cleanups\n  126aac5 transport-helper: fix remote helper namespace regression\n  21610d8 transport-helper: clarify pushing without refspecs\n  a93b4a0 transport-helper: warn when refspec is not used\n  664059f transport-helper: update remote helper namespace\n  c4458ec fast-export: Allow pruned-references in mark file\n  ...\n\nMoreover, when sending patches for review, you can configure `git\nsend-email` to use `git related` to find relevant people that should\nbe Cc'ed:\n\n  % git send-email --cc-cmd='git related' *.patch\n\nIt has way many more features than git-contacts which is a rewrite in\nPerl of this script, but only the initial bare minimum stage.\n\nI've also added tests, and this is how git-contacts fares in comparison:\n\n--- expected 2013-10-10 21:13:45.938291298 +0000\n+++ actual 2013-10-10 21:13:45.937291298 +0000\n@@ -1,2 +1,2 @@\n-Jon Stewart <jon@stewart.com> (author: 50%)\n-Pablo Escobar <pablo@escobar.com> (author: 50%)\n+Jon Stewart <jon@stewart.com>\n+Pablo Escobar <pablo@escobar.com>\nnot ok 1 - basic\n\ngit-contacts doesn't show the amount of involvement, but that's easy to fix.\n\n--- expected 2013-10-10 21:13:45.975291299 +0000\n+++ actual 2013-10-10 21:13:45.974291299 +0000\n@@ -1,2 +1,3 @@\n-John Poppins <john@doe.com> (author: 66%)\n-Jon Stewart <jon@stewart.com> (reviewer: 33%, author: 33%)\n+John Doe <john@doe.com>\n+John Poppins <john@doe.com>\n+Jon Stewart <jon@stewart.com>\nnot ok 2 - others\n\ngit-contacts doesn't show the kind of involvement (reviewer, author)\nnor does it group people by their email address.\n\n(skip other failures)\n\nexpecting success:\ngit related -craw -1 master | git log --format='%s' --no-walk --stdin\n> actual &&\ncat > expected <<-EOF &&\nfour\nthree\none\nEOF\ntest_cmp expected actual\n\nnot ok 7 - commits\n\nAlso, it doesn't have the option to show the commits themselves, which\nis useful to investigate the diffs. This feature alone is what makes\nthe make \"git-contacts\" not appropriate, because if this feature is\nimplemented, 'git contacts --commits' wouldn't have anything to do\nwith \"contacts\".\n\nFor that matter it doesn't support any options at all (e.g.\n--min-percent, --since), and doesn't have a usage helper (--help).\n\nJust put git-related in your PATH, and enjoy :)\n\nCheers.\n\n[1] http://article.gmane.org/gmane.comp.version-control.git/226058\n\n-- \nFelipe Contreras\n"},{"id":"228719","messageId":"CAMP44s2g_PL5z9KssOc2O10gRPNQKW7kfJDUteF-RXaqF0hMJA@mail.gmail.com","threadId":"35101","inReplyTo":"CAMP44s0wPzV6FkfON4zazkOWqTB0qbpdEtruHD01NybtiK6-Og@mail.gmail.com","subject":"Re: [ANNOUNCE] git-related-0.1","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2013-10-10T21:44:57Z","receivedAt":"2013-10-10T21:44:57Z","isPatch":false,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"On Thu, Oct 10, 2013 at 4:43 PM, Felipe Contreras\n<felipe.contreras@gmail.com> wrote:\n\n> Just put git-related in your PATH, and enjoy :)\n\nAnd of course I forgot the link:\n\nhttps://github.com/felipec/git-related\n\n-- \nFelipe Contreras\n"},{"id":"228720","messageId":"CAH5451=LPy5ybu6n457NPcnf=Bbsv4jNyiO6ve=-T0qXJwq_bA@mail.gmail.com","threadId":"35101","inReplyTo":"CAMP44s0wPzV6FkfON4zazkOWqTB0qbpdEtruHD01NybtiK6-Og@mail.gmail.com","subject":"Re: [ANNOUNCE] git-related-0.1","fromName":"Andrew Ardill","fromEmail":"andrew.ardill@gmail.com","sentAt":"2013-10-10T22:24:39Z","receivedAt":"2013-10-10T22:24:39Z","isPatch":false,"sender":{"key":"andrew.ardill@gmail.com","avatar":"https://gravatar.com/avatar/da14cb7c091dd44dc6c63a4d3361b149acaf25226dc78eb4131a17b93d9b0993?d=mp&s=160"},"body":"On 11 October 2013 08:43, Felipe Contreras <felipe.contreras@gmail.com> wrote:\n> After gathering all the relevant\n> people, it groups them to show what exactly was their role when the\n> participated in the development of the relevant commit, and on how\n> many relevant commits they participated.\n\nIt looks like you group by emails, any idea if anyone purposefully\nuses the same email but a different name? I don't know if the email is\nassumed to be the unique identifier, or if the name/email pair is,\nhowever I think the typical use case is definitely to group by email\nso it's a useful default behaviour.\n\n> They are only displayed if\n> they pass a minimum threshold of participation.\n\nOut of interest, how is the threshold determined and is it configurable?\n\nRegards,\n\nAndrew Ardill\n"},{"id":"228722","messageId":"CAMP44s0CpqaBndtbwBiGaQo4PF2=tRTNO+L_rx38wnyuwivDZg@mail.gmail.com","threadId":"35101","inReplyTo":"CAH5451=LPy5ybu6n457NPcnf=Bbsv4jNyiO6ve=-T0qXJwq_bA@mail.gmail.com","subject":"Re: [ANNOUNCE] git-related-0.1","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2013-10-10T23:04:13Z","receivedAt":"2013-10-10T23:04:13Z","isPatch":false,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"On Thu, Oct 10, 2013 at 5:24 PM, Andrew Ardill <andrew.ardill@gmail.com> wrote:\n> On 11 October 2013 08:43, Felipe Contreras <felipe.contreras@gmail.com> wrote:\n>> After gathering all the relevant\n>> people, it groups them to show what exactly was their role when the\n>> participated in the development of the relevant commit, and on how\n>> many relevant commits they participated.\n>\n> It looks like you group by emails, any idea if anyone purposefully\n> uses the same email but a different name? I don't know if the email is\n> assumed to be the unique identifier, or if the name/email pair is,\n> however I think the typical use case is definitely to group by email\n> so it's a useful default behaviour.\n\nYes, I think I described that in the announcement. It was a feature\nsomebody requested, and it was easy to implement.\n\n>> They are only displayed if\n>> they pass a minimum threshold of participation.\n>\n> Out of interest, how is the threshold determined and is it configurable?\n\nThe threshold by default is 10%, but it's configurable with --min-percent.\n\n-- \nFelipe Contreras\n"}]}