git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC v2] git-multimail: a replacement for post-receive-email

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Feb 15, 2013, 05:07 UTC
Message-ID
<511DC28C.1080104@alum.mit.edu>
In-Reply-To
<vpq7gmbdpi2.fsf@grenoble-inp.fr>
On 02/14/2013 01:55 PM, Matthieu Moy wrote:
Show 60 quoted lines
> Michael Haggerty <mhagger@alum.mit.edu> writes:
> 
>> On 02/13/2013 03:56 PM, Matthieu Moy wrote:
>>
>>> Installation troubles:
>>>
>>> I had an old python installation (Red Hat package, and I'm not root),
>>> that did not include the email.utils package, so I couldn't use my
>>> system's python. I found no indication about python version in README,
>>> so I installed the latest python by hand, just to find out that
>>> git-multimail wasn't compatible with Python 3.x. 2to3 can fix
>>> automatically a number of 3.x compatibility issues, but not all of them
>>> so I gave up and installed Python 2.7.
>>
>> What version of Python was it that caused problems?
> 
> Python 2.4.3, installed with RHEL 5.9.
> 
>> I just discovered that the script wouldn't have worked with Python
>> 2.4, where "email.utils" used to be called "email.Utils".
> 
> Indeed, "import email.Utils" works with this Python.
> 
>> But I pushed a fix to GitHub:
>>
>>     ddb1796660 Accommodate older versions of Python's email module.
> 
> Not sufficient, but I added a pull request that works for me with 2.4.
> 
>>> @@ -835,6 +837,17 @@ class ReferenceChange(Change):
>>>                  for line in self.expand_lines(NO_NEW_REVISIONS_TEMPLATE):
>>>                      yield line
>>>  
>>> +            if adds and self.showlog:
>>> +                yield '\n'
>>> +                yield 'Detailed log of added commits:\n\n'
>>> +                for line in read_lines(
>>> +                        ['git', 'log']
>>> +                        + self.logopts
>>> +                        + ['%s..%s' % (self.old.commit, self.new.commit,)],
>>> +                        keepends=True,
>>> +                        ):
>>> +                    yield line
>>> +
>>>              # The diffstat is shown from the old revision to the new
>>>              # revision.  This is to show the truth of what happened in
>>>              # this change.  There's no point showing the stat from the
>>>
>>
>> Thanks for the patch.  I like the idea, but I think the implementation
>> is incorrect.  Your code will not only list new commits but will also
>> list commits that were already in the repository on another branch
>> (e.g., if an existing feature branch is merged into master, all of the
>> commits on the feature branch will be listed).  (Or was that your
>> intention?)
> 
> I did not think very carefully about this case, but the behavior of my
> code seems sensible (although not uncontroversial): it's just showing
> the detailed log for the same commits as the summary at the top of the
> email. I have no personnal preferences.

I guess it depends a lot on what logopts are used. If the user configures logopts to emit full patches, then the repeated reporting of the same commits would cause a big increase in the bulk of notification emails. But if the logopts are set to just emit a brief summary (e.g., author and log message), then a bit of repetition might be acceptable. But since I wouldn't use this feature, I don't personally have a preference.

Show 18 quoted lines
>> But even worse, it will fail to list commits that were
>> added at the same time that a branch was created (e.g., if I create a
>> feature branch with a number of commits on it and then push it for the
>> first time).
> 
> Right.
> 
>> Probably the Push object has to negotiate with its constituent
>> ReferenceChange objects to figure out which one is responsible for
>> summarizing each of the commits newly added by the push (i.e., the ones
>> returned by push.get_new_commits(None)).
> 
> I updated the pull request with a version that works for new branches,
> and takes the list of commits to display from the call to
> get_new_commits (which were already there for other purpose). Then, it
> essentially calls "git log --no-walk $list_of_sha1s".
> 
> This should be better.
I will check it out.
Thanks!
Michael
-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
Previous: Matthieu MoyNext: Matthieu Moy
Message 9 of 17 in “[RFC v2] git-multimail: a replacement for post-receive-email”
  1. Michael HaggertyJan 27, 2013
  2. Ævar Arnfjörð BjarmasonJan 29, 2013
  3. Chris HiestandJan 30, 2013
  4. Matthieu MoyFeb 13, 2013
  5. Andy ParkinsFeb 13, 2013
  6. Matthieu MoyFeb 13, 2013
  7. Michael HaggertyFeb 13, 2013
  8. Matthieu MoyFeb 14, 2013
  9. Michael HaggertyFeb 15, 2013
  10. Matthieu MoyFeb 20, 2013
  11. Michael HaggertyFeb 24, 2013
  12. Matthieu MoyFeb 25, 2013
  13. Michael HaggertyFeb 25, 2013
  14. Michael HaggertyMar 9, 2013
  15. Michael HaggertyFeb 24, 2013
  16. Matthieu MoyFeb 25, 2013
  17. Matthieu MoyMar 4, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.