After some months, I just updated my local ikiwiki sources, and rebuilt
the Hurd web pages, <http://git.savannah.gnu.org/cgit/hurd/web.git/>.

I was confused, having switched to the new automatic (thanks!) --gettime
mechanism, why on some pages the timestamps had changed compared to my
previous use of --getctime and setting files' mtimes (using a script)
according to the last Git commit.  For example:

community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.html

old:

    Last edited <span class="date">2008-09-11 18:11:53 UTC</span>
    <!-- Created <span class="date">2008-09-11 17:47:08 UTC</span> -->

new:

    Last edited <span class="date">2008-09-11 18:12:22 UTC</span>
    <!-- Created <span class="date">2008-09-11 17:47:50 UTC</span> -->


I had a look at what git.pm is doing, and began to manually replay /
investigate:

    $ git log --pretty=fuller --name-only --relative -- community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    commit 8f1b97bfe45b2f173e3a7d55dee226a9e289a695
    Author:     arnebab <arne_bab@web.de>
    AuthorDate: Thu Sep 11 20:11:53 2008 +0200
    Commit:     arnebab <arne_bab@web.de>
    CommitDate: Thu Sep 11 20:11:53 2008 +0200
    
        Added a link to the X.org guide in this wiki.
    
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    commit 3ef8b7d80d80572c436c4c60c71879bc74409816
    Author:     arnebab <arne_bab@web.de>
    AuthorDate: Thu Sep 11 19:47:08 2008 +0200
    Commit:     arnebab <arne_bab@web.de>
    CommitDate: Thu Sep 11 19:47:08 2008 +0200
    
        Minor update on the enty trying to get X working -> 'watch this place for updates'
    
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn

OK, these are my old dates.

    $ git log --pretty=format:%ci --name-only --relative -- community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn 
    2008-09-11 20:11:53 +0200
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    2008-09-11 19:47:08 +0200
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    $ git log --pretty=format:%ct --name-only --relative -- community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn 
    1221156713
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    1221155228
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    $ date -d @1221156713
    Thu Sep 11 18:11:53 UTC 2008
    $ date -d @1221155228
    Thu Sep 11 17:47:08 UTC 2008

That's all consistent.


But:

    $ perl -le 'use Storable; my $index=Storable::retrieve("indexdb"); use Data::Dumper; print Dumper $index'
    [...]
                          'community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn' => {
                                                                                        'ctime' => '1221155270',
                                                                                        'dest' => [
                                                                                                    'community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.html'
                                                                                                  ],
                                                                                        'typedlinks' => {
                                                                                                          'tag' => {}
                                                                                                        },
                                                                                        'mtime' => 1221156742,
                                                                                        'depends_simple' => {
                                                                                                              'sidebar' => 1
                                                                                                            },
                                                                                        'links' => [
                                                                                                     'community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x/discussion',
                                                                                                     'Hurd/DebianXorg'
                                                                                                   ],
                                                                                        'state' => {
    [...]

    $ date -d @1221156742
    Thu Sep 11 18:12:22 UTC 2008
    $ date -d @1221155270
    Thu Sep 11 17:47:50 UTC 2008

That's different, and it matches what the new ikiwiki writes into the
HTML file.


Back to Git again, this time without specifying the file:

    $ git log --pretty=format:%ct --name-only --relative
    [...]
    1221255713
    1221255655
    unsorted/PortingIssues.mdwn
    
    1221156742 [Thu Sep 11 18:12:22 UTC 2008]
    1221156713 [Thu Sep 11 18:11:53 UTC 2008]
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    1221156267
    1221156235
    index.mdwn
    
    1221156122
    1221156091
    index.mdwn
    
    1221155942
    1221155910
    index.mdwn
    
    1221155270 [Thu Sep 11 17:47:50 UTC 2008]
    1221155228 [Thu Sep 11 17:47:08 UTC 2008]
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    
    1221154986
    community/gsoc.mdwn
    community/gsoc/project_ideas.mdwn
    
    1221147244
    whatsnew.html
    [...]

Aha!

... and some more detail:

    $ git log --pretty=fuller --name-only --relative
    [...]
    commit e4e89e1683012c879012522105a3471a00714613
    Author:     Samuel Thibault <samuel.thibault@ens-lyon.org>
    AuthorDate: Fri Sep 12 23:40:55 2008 +0200
    Commit:     Samuel Thibault <samuel.thibault@ens-lyon.org>
    CommitDate: Fri Sep 12 23:40:55 2008 +0200
    
        MSG_NOSIGNAL and IPV6_PKTINFO got fixed
    
    unsorted/PortingIssues.mdwn
    
    commit c389fae98dff86527be62f895ff7272e4ab1932c
    Merge: 0339e3e 8f1b97b
    Author:     GNU Hurd wiki engine <web-hurd@gnu.org>
    AuthorDate: Thu Sep 11 18:12:22 2008 +0000
    Commit:     GNU Hurd wiki engine <web-hurd@gnu.org>
    CommitDate: Thu Sep 11 18:12:22 2008 +0000
    
        Merge branch 'master' of wiki@192.168.10.50:wiki
    
    commit 8f1b97bfe45b2f173e3a7d55dee226a9e289a695
    Author:     arnebab <arne_bab@web.de>
    AuthorDate: Thu Sep 11 20:11:53 2008 +0200
    Commit:     arnebab <arne_bab@web.de>
    CommitDate: Thu Sep 11 20:11:53 2008 +0200
    
        Added a link to the X.org guide in this wiki.
    
    community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
    [...]

So, merges are involved there.

What (the new) ikiwiki code does, is use the timestamp when the merge was
done instead of the timestamp when the commit was done.  Is this
intentional?  Otherwise I could supply a patch.

--[[tschwinge]]

> In order to be nice and fast, the git backend runs git log once
> and records data for all files. Rather than looking at the log for a
> given file. So amoung other things, it does not follow renames.
> 
> AFAICS, git log only shows merges modifying files if it was a conflicted
> merge. As the file is then actually modified to resolve the merge
> I think it makes sense to count the merge as the last modification in
> that case. --[[Joey]] 

>> That'd be reasonable, but `git log` will also show merges that are not
>> conflicting (as in my case).

>>> Actually when displaying a merge, `git log --stat` only lists files that
>>> were actually modified in a new way as part of the merge resolution.
>>> Ie, if the merge resolution only joins together some of the parent
>>> hunks, the file is not listed as having been modified.
>>>
>>> So, no, ikiwiki's use of git log will not show files modified in
>>> non-conflicting merges.
>>> --[[Joey]]

>> Yet, I'm not totally disagreeing with your choice.  With this `git
>> log` invocation, you're not able to tell from its output whether a
>> conflict was resolved or not.

>> Also, it's a bit like the *should we use the **author timestamp** or
>> **commit timestamp*** discussion.  Your code will always use the
>> latest timestamp.

>> I guess I'll get my head wrapped around that, and it's fine, so this is
>> [[done]].

>> --[[tschwinge]]
