Mercurial > hg
view tests/test-sqlitestore.t @ 41454:d1d3094b54f9
patch: handle 0 context lines (diff.unified=0) when parsing patches
Previously, if there were no context lines, we would just keep updating the
ranges and the hunk, but not actually storing the hunk (just overwriting it each
time). Thus a diff like this:
$ hg diff --config diff.unified=0
diff --git a/bar b/bar
--- a/bar
+++ b/bar
@@ -1,0 +2,1 @@ 1
+change1
@@ -3,0 +5,1 @@ 3
+change2
would come out of the parser like this (change1 is lost):
bar:
@@ -3,0 +5,1 @@ 3
+change2
This had some really weird side effects for things like commit --interactive,
split, etc.
Differential Revision: https://phab.mercurial-scm.org/D5743
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Mon, 28 Jan 2019 18:00:14 -0800 |
parents | 5014e93a5696 |
children | e1643a0455c8 |
line wrap: on
line source
#require sqlite $ cat >> $HGRCPATH <<EOF > [extensions] > sqlitestore = > EOF New repo should not use SQLite by default $ hg init empty-no-sqlite $ cat empty-no-sqlite/.hg/requires dotencode fncache generaldelta revlogv1 sparserevlog store storage.new-repo-backend=sqlite is recognized $ hg --config storage.new-repo-backend=sqlite init empty-sqlite $ cat empty-sqlite/.hg/requires dotencode exp-sqlite-001 exp-sqlite-comp-001=zstd (zstd !) exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ (no-zstd !) fncache generaldelta revlogv1 sparserevlog store $ cat >> $HGRCPATH << EOF > [storage] > new-repo-backend = sqlite > EOF Can force compression to zlib $ hg --config storage.sqlite.compression=zlib init empty-zlib $ cat empty-zlib/.hg/requires dotencode exp-sqlite-001 exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ fncache generaldelta revlogv1 sparserevlog store Can force compression to none $ hg --config storage.sqlite.compression=none init empty-none $ cat empty-none/.hg/requires dotencode exp-sqlite-001 exp-sqlite-comp-001=none fncache generaldelta revlogv1 sparserevlog store Can make a local commit $ hg init local-commit $ cd local-commit $ echo 0 > foo $ hg commit -A -m initial adding foo That results in a row being inserted into various tables $ sqlite3 .hg/store/db.sqlite << EOF > SELECT * FROM filepath; > EOF 1|foo $ sqlite3 .hg/store/db.sqlite << EOF > SELECT * FROM fileindex; > EOF 1|1|0|-1|-1|0|0|1||6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe (esc) $ sqlite3 .hg/store/db.sqlite << EOF > SELECT * FROM delta; > EOF 1|1| \xd2\xaf\x8d\xd2"\x01\xdd\x8dH\xe5\xdc\xfc\xae\xd2\x81\xff\x94"\xc7|0 (esc) Tracking multiple files works $ echo 1 > bar $ hg commit -A -m 'add bar' adding bar $ sqlite3 .hg/store/db.sqlite << EOF > SELECT * FROM filedata ORDER BY id ASC; > EOF 1|1|foo|0|6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe|-1|-1|0|0|1| (esc) 2|2|bar|0|\xb8\xe0/d3s\x80!\xa0e\xf9Au\xc7\xcd#\xdb_\x05\xbe|-1|-1|1|0|2| (esc) Multiple revisions of a file works $ echo a >> foo $ hg commit -m 'modify foo' $ sqlite3 .hg/store/db.sqlite << EOF > SELECT * FROM filedata ORDER BY id ASC; > EOF 1|1|foo|0|6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe|-1|-1|0|0|1| (esc) 2|2|bar|0|\xb8\xe0/d3s\x80!\xa0e\xf9Au\xc7\xcd#\xdb_\x05\xbe|-1|-1|1|0|2| (esc) 3|1|foo|1|\xdd\xb3V\xcd\xde1p@\xf7\x8e\x90\xb8*\x8b,\xe9\x0e\xd6j+|0|-1|2|0|3|1 (esc) $ cd ..