id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,branch,changelog,apichanges,internalchanges 10676,"GitPlugin: support ""mergetag"" field in commits",Christian Boos,Christian Boos,"Starting with Git 1.7.9 when you pull a signed tag, git verifies the PGP signature and creates a special merge commit: ''The resulting commit records the signed tag used for this validation in a hidden field so that it can later be used by others to audit the history.'' (see [http://git-blame.blogspot.fr/2012/01/using-signed-tag-in-pull-requests.html Using signed tag in pull requests]) Such commits are not supported currently (e.g. 2240a7b in the Linux git repository): {{{ ValueError: need more than 0 values to unpack File ""c:/Trac/repos/trunk/trac/web/main.py"", line 480, in _dispatch_request dispatcher.dispatch(req) File ""c:/Trac/repos/trunk/trac/web/main.py"", line 198, in dispatch resp = chosen_handler.process_request(req) File ""c:/Trac/repos/trunk/trac/versioncontrol/web_ui/changeset.py"", line 317, in process_request chgset = repos.get_changeset(new) File ""c:/Trac/repos/trunk/tracopt/versioncontrol/git/git_fs.py"", line 430, in get_changeset return GitChangeset(self, rev) File ""c:/Trac/repos/trunk/tracopt/versioncontrol/git/git_fs.py"", line 638, in __init__ msg, props = repos.git.read_commit(sha) File ""c:/Trac/repos/trunk/tracopt/versioncontrol/git/PyGIT.py"", line 748, in read_commit key, value = line.split(None, 1) }}} (`line` being `u' '` here) The content of the commit object is: {{{ tree b19535236cfb6c64b798745dd3917dafc27bcd0a parent 30aaca4582eac20a52ac7b2ec35bdb908133e5b1 parent 5a0dc7365c240795bf190766eba7a27600be3b3e author Linus Torvalds 1323915958 -0800 committer Linus Torvalds 1323915958 -0800 mergetag object 5a0dc7365c240795bf190766eba7a27600be3b3e type commit tag tytso-for-linus-20111214A tagger Theodore Ts'o 1323890113 -0500 tytso-for-linus-20111214 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIcBAABCAAGBQJO6PXBAAoJENNvdpvBGATwpuEP/2RCxmdWYZ8/6Z6pmTh3hHN5 fx6HckTdvLQOvbQs72wzVW0JKyc25QmW2mQc5z3MjSymjf/RbEKihPUITRNbHrTD T2sP/lWu09AKLioEg4ucAKn/A7Do3UDIkXTszvVVP/t2psVPzLeJ1njQKra14Nyz o0+gSlnwuGx9WaxfR+7MYNs2ikdSkXIeYsiFAOY4YOxwwC99J/lZ0YaNkbI7UBtC yu2XLIvPboa5JZXANq2G3VhVIETMmOyRTCC76OAXjqkdp9nLFWDG0ydqQh0vVZwL xQGOmAj+l3BNTE0QmMni1w7A0SBU3N6xBA5HN6Y49RlbsMYG27aN54Fy5K2R41I3 QXVhBL53VD6b0KaITcoz7jIGIy6qk9Wx+2WcCYtQBSIjL2YwlaJq0PL07+vRamex sqHGDejcNY87i6AV0DP6SNuCFCi9xFYoAoMi9Wu5E9+T+Vck0okFzW/luk/FvsSP YA5Dh+vISyBeCnWQvcnBmsUQyf8d9MaNnejZ48ath+GiiMfY8USAZ29RAG4VuRtS 9DAyTTIBA73dKpnvEV9u4i8Lwd8hRVMOnPyOO785NwEXk3Ng08pPSSbMklW6UfCY 4nr5UNB13ZPbXx4uoAvATMpCpYxMaLEdxmeMvgXpkekl0hHBzpVDey1Vu9fb/a5n dQpo6WWG9HIJ23hOGAGR =n3Lm -----END PGP SIGNATURE----- Merge tag 'tytso-for-linus-20111214' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 * tag 'tytso-for-linus-20111214' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: ext4: handle EOF correctly in ext4_bio_write_page() ext4: remove a wrong BUG_ON in ext4_ext_convert_to_initialized ext4: correctly handle pages w/o buffers in ext4_discard_partial_buffers() ext4: avoid potential hang in mpage_submit_io() when blocksize < pagesize ext4: avoid hangs in ext4_da_should_update_i_disksize() ext4: display the correct mount option in /proc/mounts for [no]init_itable ext4: Fix crash due to getting bogus eh_depth value on big-endian systems ext4: fix ext4_end_io_dio() racing against fsync() .. using the new signed tag merge of git that now verifies the gpg signature automatically. Yay. The branchname was just 'dev', which is prettier. I'll tell Ted to use nicer tag names for future cases. }}} I have a fix for this, but was wondering if there were other such ""hidden fields"" to take into account, or if it would be worth having a more generic support for such multiline fields. Besides, that signature information is not shown, maybe it would be useful to find a way to display it in the changeset view.",enhancement,closed,normal,1.0,plugin/git,0.13dev,normal,fixed,git,,,"Support hidden ""mergetag"" field in git commits",,