mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 01:39:21 +03:00
146a62e3ef
Summary: The expression `::revs & age("<x")` can be slow, as all ancestors must be analyzed in case there are commits with ancestors that have later dates. Most of this time this is unnecessary, as commits are usually monotonic in their dates. The `ancestorsaged` revsetpredicate evaluates to all ancestors within an age range, optimized as if commit dates are monotonic. Reviewed By: ikostia Differential Revision: D8489319 fbshipit-source-id: 9b9055019c2afa70497a9df02c6fe3504e2c381a
109 lines
3.4 KiB
Perl
109 lines
3.4 KiB
Perl
|
|
$ cat << EOF >> $HGRCPATH
|
|
> [extensions]
|
|
> age=
|
|
> EOF
|
|
|
|
Setup repo
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ now=`date +%s`
|
|
$ touch file1
|
|
$ hg add file1
|
|
$ for delta in 31536000 86401 86369 3800 420 5
|
|
> do
|
|
> commit_time=`expr $now - $delta`
|
|
> echo "$delta" > file1
|
|
> hg commit -d "$commit_time 0" -m "Changeset $delta seconds ago"
|
|
> done
|
|
|
|
Check age ranges
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<30")'
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<7m30s")'
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<1h4m")'
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<1d")'
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<364d23h59m")'
|
|
1 Changeset 86401 seconds ago
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age(">1s")'
|
|
0 Changeset 31536000 seconds ago
|
|
1 Changeset 86401 seconds ago
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age(">1m")'
|
|
0 Changeset 31536000 seconds ago
|
|
1 Changeset 86401 seconds ago
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age(">1h")'
|
|
0 Changeset 31536000 seconds ago
|
|
1 Changeset 86401 seconds ago
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age(">1d")'
|
|
0 Changeset 31536000 seconds ago
|
|
1 Changeset 86401 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age(">365d")'
|
|
0 Changeset 31536000 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<64m")'
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<60m500s")'
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<1h500s")'
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("1h-20d")'
|
|
1 Changeset 86401 seconds ago
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("invalid")'
|
|
hg: parse error: invalid age range
|
|
[255]
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("1h")'
|
|
hg: parse error: invalid age range
|
|
[255]
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("<3m2h")'
|
|
hg: parse error: invalid age in age range: 3m2h
|
|
[255]
|
|
$ hg log -T '{rev} {desc}\n' -r 'age(">3h2h")'
|
|
hg: parse error: invalid age in age range: 3h2h
|
|
[255]
|
|
$ hg log -T '{rev} {desc}\n' -r 'age("1h-5h-10d")'
|
|
hg: parse error: invalid age in age range: 5h-10d
|
|
[255]
|
|
$ hg log -T '{rev} {desc}\n' -r 'ancestorsaged(., "<1d")'
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
5 Changeset 5 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'ancestorsaged(.^, "<1d")'
|
|
2 Changeset 86369 seconds ago
|
|
3 Changeset 3800 seconds ago
|
|
4 Changeset 420 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'ancestorsaged(., "1d-20d")'
|
|
1 Changeset 86401 seconds ago
|
|
$ hg log -T '{rev} {desc}\n' -r 'ancestorsaged(., ">1d")'
|
|
0 Changeset 31536000 seconds ago
|
|
1 Changeset 86401 seconds ago
|