[PATCH 09 of 11] shelve: use fixed date for temporary commit
Mads Kiilerich
mads at kiilerich.com
Thu Feb 20 08:22:12 CST 2014
On 02/20/2014 06:37 AM, Sean Farley wrote:
> Mads Kiilerich <mads at kiilerich.com> writes:
>
>> # HG changeset patch
>> # User Mads Kiilerich <madski at unity3d.com>
>> # Date 1392860341 -3600
>> # Thu Feb 20 02:39:01 2014 +0100
>> # Node ID 6e1c0666f1f4fde109da045aedf26d93af9e7ed1
>> # Parent a03c3f91bc52bad6796d83c9a723e64f74f8e9fa
>> shelve: use fixed date for temporary commit
>>
>> Using a fixed date makes hashes stable and makes debugging simpler. The date
>> and hashes are normally not exposed.
>>
>> The only slight disadvantage is that it perhaps in some cases when doing
>> forensics could be nice to see exactly when the temporary commit was made.
> That seems like a major downside.
Why is that major?
> Why not make an optional parameter for
> setting the date through the tests?
That would introduce unnecessary complexity. I would not be able to
argue why that would be relevant.
>> diff --git a/hgext/shelve.py b/hgext/shelve.py
>> --- a/hgext/shelve.py
>> +++ b/hgext/shelve.py
>> @@ -546,7 +546,7 @@ def unshelve(ui, repo, *shelved, **opts)
>>
>> try:
>> return repo.commit(message, 'shelve at localhost',
>> - opts.get('date'), match)
>> + '0 0', match)
>> finally:
>> if hasmq:
>> repo.mq.checkapplied = saved
>> diff --git a/tests/test-shelve.t b/tests/test-shelve.t
>> --- a/tests/test-shelve.t
>> +++ b/tests/test-shelve.t
>> @@ -586,16 +586,16 @@ unshelve and conflicts with untracked fi
>> merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
>> unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
>> [1]
>> - $ hg log -G --template '{rev} {desc|firstline} {author}'
>> - @ 5 changes to 'commit stuff' shelve at localhost
>> + $ hg log -G --template '{rev} {desc|firstline} {author} {date|isodate}'
>> + @ 5 changes to 'commit stuff' shelve at localhost 1970-01-01 00:00 +0000
>> |
>> - | @ 4 pending changes temporary commit shelve at localhost
>> + | @ 4 pending changes temporary commit shelve at localhost 1970-01-01 00:00 +0000
>> |/
>> - o 3 commit stuff test
>> + o 3 commit stuff test 1970-01-01 00:00 +0000
>> |
>> - | o 2 c test
>> + | o 2 c test 1970-01-01 00:00 +0000
>> |/
>> - o 0 a test
>> + o 0 a test 1970-01-01 00:00 +0000
> The date being listed here seems to contradict your earlier statement of
> normally not being exposed.
This is the case where you look at the DAG while you are in the process
of resolving an unshelve conflict. I do not consider that 'normal'.
The commit also uses hardcoded unlocalized 'pending changes temporary
commit' and 'shelve at localhost'. That shows that this commit just is an
implementation detail.
> I would rather not see them if using log -G.
Them = the changesets? I kind of agree - it is an implementation detail.
But it would be weird if you were merging changesets that you couldn't
see at all. It shows an implementation detail, but also a detail that
explains a lot about what unshelve really do.
/Mads
More information about the Mercurial-devel
mailing list