This is an archive of the discontinued Mercurial Phabricator instance.

histedit: added rewrite.update-timestamp to fold and mess
ClosedPublic

Authored by taapas1128 on Jan 10 2019, 10:39 AM.

Details

Summary

This adds the config option to update time to current in histedit fold and mess options . Setting rewrite.update-timestamp option to True will update the timestamp to current time.This also adds tests/mockmakedate.py for supplying testable values in case current time is invoked in the tests.

Diff Detail

Repository
rHG Mercurial
Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

taapas1128 created this revision.Jan 10 2019, 10:39 AM
taapas1128 edited the summary of this revision. (Show Details)EditedJan 10 2019, 10:43 AM
taapas1128 added a subscriber: pulkit.

@pulkit please review.

yuja added a subscriber: yuja.Jan 12 2019, 8:55 PM

+ $ cat >> testmocks.py << EOF
+ > # mock out util.makedate() to supply testable values
+ > import os
+ > from mercurial import pycompat, util
+ > from mercurial.utils import dateutil
+ >
+ > def mockmakedate():
+ > filename = os.path.join(os.environ['TESTTMP'], 'testtime')
+ > try:
+ > with open(filename, 'rb') as timef:
+ > time = float(timef.read()) + 1
+ > except IOError:
+ > time = 0.0
+ > with open(filename, 'wb') as timef:
+ > timef.write(pycompat.bytestr(time))
+ > return (time, 0)
+ >
+ > dateutil.makedate = mockmakedate
+ > EOF

Perhaps, it's time to extract the mockmakedate extension to
tests/mockmakedate.py.

@@ -519,9 +520,12 @@

editor = self.commiteditor()
commit = commitfuncfor(repo, rulectx)

+ if repo.ui.configbool('rewrite','update-timestamp'):

Style nit: insert space after comma.

+ date = dateutil.makedate()
+ else :

and no space after else.

def commiteditor(self):
    """The editor to be used to edit the commit message."""

@@ -800,6 +804,8 @@

  1. date if self.firstdate(): commitopts['date'] = ctx.date()

+ elif ui.configbool('rewrite','update-timestamp'):
+ commitopts['date'] = dateutil.makedate()

else:
    commitopts['date'] = max(ctx.date(), oldctx.date())

I'm not pretty sure, but shouldn't we always update the date if update-timestamp
is on?

taapas1128 updated this revision to Diff 13197.Jan 13 2019, 1:47 AM
taapas1128 updated this revision to Diff 13198.Jan 13 2019, 1:51 AM
taapas1128 updated this revision to Diff 13199.Jan 13 2019, 2:10 AM
taapas1128 updated this revision to Diff 13200.Jan 13 2019, 2:34 AM
taapas1128 added a comment.EditedJan 13 2019, 2:38 AM

I have extracted mockdate function as tests/mockdate.py and dealt with the commas and spaces.

def commiteditor(self):
    """The editor to be used to edit the commit message."""

@@ -800,6 +804,8 @@

  1. date if self.firstdate(): commitopts['date'] = ctx.date()

+ elif ui.configbool('rewrite','update-timestamp'):
+ commitopts['date'] = dateutil.makedate()

else:
    commitopts['date'] = max(ctx.date(), oldctx.date())

Yes this is not right time should be updated everytime update-timestamp is True . I have corrected it. @yuja please review.

taapas1128 edited the summary of this revision. (Show Details)Jan 13 2019, 2:42 AM
taapas1128 edited the summary of this revision. (Show Details)Jan 13 2019, 2:46 AM
taapas1128 edited the summary of this revision. (Show Details)Jan 13 2019, 2:49 AM
taapas1128 updated this revision to Diff 13201.
taapas1128 edited the summary of this revision. (Show Details)Jan 13 2019, 2:52 AM
yuja added a comment.Jan 13 2019, 7:14 AM

Queued with minor modifications, thanks.

  • a/tests/test-histedit-fold.t

+++ b/tests/test-histedit-fold.t
@@ -15,6 +15,7 @@

> logt = log --template '{rev}:{node|short} {desc|firstline}\n'
> [extensions]
> histedit=

+ > mockmakedate = $TESTDIR/mockmakedate.py

> EOF

Inserted cd ..

+-==========================================
+Test update-timestamp config option|
+==========================================
+ $ addwithdate ()
+ > {
+ > echo $1 > $1
+ > hg add $1
+ > hg ci -m $1 -d "$2 0"
+ > }
+
+ $ initrepo ()
+ > {
+ > hg init r
+ > cd r

and renamed r to r2 to get around name conflicts.

+++ b/tests/mockmakedate.py
@@ -0,0 +1,19 @@
+from future import absolute_import
+
+# mock out util.makedate() to supply testable values
+import os
+from mercurial import pycompat, util
+from mercurial.utils import dateutil

Removed unused import of util.

This revision was automatically updated to reflect the committed changes.

@yuja thanks for the edits and queuing .