Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mercurial/mercurial-devel
1 result
Show changes
Commits on Source (10)
...@@ -255,3 +255,4 @@ ...@@ -255,3 +255,4 @@
26c57e7a0890b96e2c473b394de380d6753c9230 0 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
...@@ -271,3 +271,4 @@ ...@@ -271,3 +271,4 @@
26c57e7a0890b96e2c473b394de380d6753c9230 6.6 26c57e7a0890b96e2c473b394de380d6753c9230 6.6
71bd09bebbe36a09569cbfb388f371433360056b 6.6.1 71bd09bebbe36a09569cbfb388f371433360056b 6.6.1
136902b3a95db38854ebaf5198a627641065c2ea 6.6.2 136902b3a95db38854ebaf5198a627641065c2ea 6.6.2
3fd1efb3ad124e6686c0fb66e6943cd8aeea5681 6.6.3
...@@ -3680,7 +3680,7 @@ ...@@ -3680,7 +3680,7 @@
wopts = logcmdutil.walkopts( wopts = logcmdutil.walkopts(
pats=pats, pats=pats,
opts=opts, opts=pycompat.byteskwargs(opts),
revspec=opts['rev'], revspec=opts['rev'],
include_pats=opts['include'], include_pats=opts['include'],
exclude_pats=opts['exclude'], exclude_pats=opts['exclude'],
......
= Mercurial 6.6.2 = = Mercurial 6.6.3 =
* tests: don't use "status" operand of dd in test-censor.t (issue6858)
* tests: make sha256line.py available for all tests
* tests: use sha256line.py instead of /dev/random in test-censor.t (issue6858)
* tests: fix nondeterministic test failure in test-contrib-perf.t
* rust-changelog: don't panic on empty file lists
* grep: restore usage of --include/--exclude options
= Mercurial 6.6.2 =
* histedit: remove superfluous echo() and endwin() calls (issue6859) * histedit: remove superfluous echo() and endwin() calls (issue6859)
* persistent-nodemap: avoid writing nodemap for empty revlog * persistent-nodemap: avoid writing nodemap for empty revlog
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
use crate::utils::hg_path::HgPath; use crate::utils::hg_path::HgPath;
use crate::vfs::Vfs; use crate::vfs::Vfs;
use crate::{Graph, GraphError, RevlogOpenOptions, UncheckedRevision}; use crate::{Graph, GraphError, RevlogOpenOptions, UncheckedRevision};
use itertools::Itertools; use itertools::{Either, Itertools};
use std::ascii::escape_default; use std::ascii::escape_default;
use std::borrow::Cow; use std::borrow::Cow;
use std::fmt::{Debug, Formatter}; use std::fmt::{Debug, Formatter};
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
use std::ascii::escape_default; use std::ascii::escape_default;
use std::borrow::Cow; use std::borrow::Cow;
use std::fmt::{Debug, Formatter}; use std::fmt::{Debug, Formatter};
use std::iter;
/// A specialized `Revlog` to work with changelog data format. /// A specialized `Revlog` to work with changelog data format.
pub struct Changelog { pub struct Changelog {
...@@ -230,9 +231,15 @@ ...@@ -230,9 +231,15 @@
/// The files changed in this revision. /// The files changed in this revision.
pub fn files(&self) -> impl Iterator<Item = &HgPath> { pub fn files(&self) -> impl Iterator<Item = &HgPath> {
self.bytes[self.timestamp_end + 1..self.files_end] if self.timestamp_end == self.files_end {
.split(|b| b == &b'\n') Either::Left(iter::empty())
.map(HgPath::new) } else {
Either::Right(
self.bytes[self.timestamp_end + 1..self.files_end]
.split(|b| b == &b'\n')
.map(HgPath::new),
)
}
} }
/// The change description. /// The change description.
...@@ -360,4 +367,12 @@ ...@@ -360,4 +367,12 @@
); );
Ok(()) Ok(())
} }
#[test]
fn test_empty_files_list() {
assert!(ChangelogRevisionData::null()
.files()
.collect_vec()
.is_empty());
}
} }
#!/usr/bin/env python3
#
# A tool to help producing large and poorly compressible files
#
# Usage:
# $TESTDIR/seq.py 1000 | $TESTDIR/sha256line.py > my-file.txt
import hashlib
import sys
for line in sys.stdin:
print(hashlib.sha256(line.encode('utf8')).hexdigest())
...@@ -316,7 +316,7 @@ ...@@ -316,7 +316,7 @@
rev-count data-size inl type target rev-count data-size inl type target
8 ??? no file target (glob) (revlogv2 !) 8 ??? no file target (glob) (revlogv2 !)
8 ??? yes file target (glob) (revlogv1 !) 8 ??? yes file target (glob) (revlogv1 !)
$ cat /dev/rand?m | dd status=none count=200 | f --hexdump > target $ $TESTDIR/seq.py 4000 | $TESTDIR/sha256line.py > target
$ hg ci -m 'add 100k passwords' $ hg ci -m 'add 100k passwords'
$ H2=`hg id --debug -i` $ H2=`hg id --debug -i`
$ C5=$H2 $ C5=$H2
......
...@@ -525,6 +525,23 @@ ...@@ -525,6 +525,23 @@
port2:2147483647:deport port2:2147483647:deport
port2:2147483647:wport port2:2147483647:wport
Testing include/exclude
$ hg cp port tort
$ hg grep port -X tort
port:export
port:vaportight
port:import/export
port2:export
port2:vaportight
port2:import/export
port2:deport
port2:wport
$ hg grep port -I tort
tort:export
tort:vaportight
tort:import/export
$ cd .. $ cd ..
$ hg init t2 $ hg init t2
$ cd t2 $ cd t2
......
...@@ -10,16 +10,9 @@ ...@@ -10,16 +10,9 @@
> [debug] > [debug]
> revlog.debug-delta=yes > revlog.debug-delta=yes
> EOF > EOF
$ cat << EOF >> sha256line.py
> # a way to quickly produce file of significant size and poorly compressable content.
> import hashlib
> import sys
> for line in sys.stdin:
> print(hashlib.sha256(line.encode('utf8')).hexdigest())
> EOF
$ hg init base-repo $ hg init base-repo
$ cd base-repo $ cd base-repo
create a "large" file create a "large" file
...@@ -20,10 +13,10 @@ ...@@ -20,10 +13,10 @@
$ hg init base-repo $ hg init base-repo
$ cd base-repo $ cd base-repo
create a "large" file create a "large" file
$ $TESTDIR/seq.py 1000 | $PYTHON $TESTTMP/sha256line.py > my-file.txt $ $TESTDIR/seq.py 1000 | $TESTDIR/sha256line.py > my-file.txt
$ hg add my-file.txt $ hg add my-file.txt
$ hg commit -m initial-commit $ hg commit -m initial-commit
DBG-DELTAS: FILELOG:my-file.txt: rev=0: delta-base=0 * (glob) DBG-DELTAS: FILELOG:my-file.txt: rev=0: delta-base=0 * (glob)
...@@ -32,7 +25,7 @@ ...@@ -32,7 +25,7 @@
Add more change at the end of the file Add more change at the end of the file
$ $TESTDIR/seq.py 1001 1200 | $PYTHON $TESTTMP/sha256line.py >> my-file.txt $ $TESTDIR/seq.py 1001 1200 | $TESTDIR/sha256line.py >> my-file.txt
$ hg commit -m "large-change" $ hg commit -m "large-change"
DBG-DELTAS: FILELOG:my-file.txt: rev=1: delta-base=0 * (glob) DBG-DELTAS: FILELOG:my-file.txt: rev=1: delta-base=0 * (glob)
DBG-DELTAS: MANIFESTLOG: * (glob) DBG-DELTAS: MANIFESTLOG: * (glob)
...@@ -273,7 +266,7 @@ ...@@ -273,7 +266,7 @@
$ hg -R peer-bad-delta-with-full update 'desc("merge")' --quiet $ hg -R peer-bad-delta-with-full update 'desc("merge")' --quiet
$ ($TESTDIR/seq.py 2000 2100; $TESTDIR/seq.py 500 510; $TESTDIR/seq.py 3000 3050) \ $ ($TESTDIR/seq.py 2000 2100; $TESTDIR/seq.py 500 510; $TESTDIR/seq.py 3000 3050) \
> | $PYTHON $TESTTMP/sha256line.py > peer-bad-delta-with-full/my-file.txt > | $TESTDIR/sha256line.py > peer-bad-delta-with-full/my-file.txt
$ hg -R peer-bad-delta-with-full commit -m 'trigger-full' $ hg -R peer-bad-delta-with-full commit -m 'trigger-full'
DBG-DELTAS: FILELOG:my-file.txt: rev=4: delta-base=4 * (glob) DBG-DELTAS: FILELOG:my-file.txt: rev=4: delta-base=4 * (glob)
DBG-DELTAS: MANIFESTLOG: * (glob) DBG-DELTAS: MANIFESTLOG: * (glob)
......