mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
3676051d80
Users with custom [diff] configuration most certainly didn't intend it to make mq lose changes. It could: * git is handled perfectly fine. * nobinary could make mq leave some files out from the patches. * noprefix could make mq itself (and probably also other tools) fail to apply patches without the usual a/b prefix. * ignorews, ignorewsamount, or ignoreblanklines could create patches with missing whitespace that could fail to apply correctly. Thus, when refreshing patches, use patch.difffeatureopts, optionally with git as before, but without the config options for whitespace and format changing that most likely will cause loss or problems. (patch.diffopts is just patch.difffeatureopts with all options enabled and can be replaced with that.)
270 lines
4.7 KiB
Perl
270 lines
4.7 KiB
Perl
# Test the plumbing of mq.git option
|
|
# Automatic upgrade itself is tested elsewhere.
|
|
|
|
$ cat <<EOF >> $HGRCPATH
|
|
> [extensions]
|
|
> mq =
|
|
> [diff]
|
|
> nodates = 1
|
|
> EOF
|
|
|
|
$ hg init repo-auto
|
|
$ cd repo-auto
|
|
|
|
git=auto: regular patch creation:
|
|
|
|
$ echo a > a
|
|
$ hg add a
|
|
$ hg qnew -d '0 0' -f adda
|
|
|
|
$ cat .hg/patches/adda
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 0000000000000000000000000000000000000000
|
|
|
|
diff -r 000000000000 -r ef8dafc9fa4c a
|
|
--- /dev/null
|
|
+++ b/a
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
|
|
git=auto: git patch creation with copy:
|
|
|
|
$ hg cp a b
|
|
$ hg qnew -d '0 0' -f copy
|
|
|
|
$ cat .hg/patches/copy
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent ef8dafc9fa4caff80f6e243eb0171bcd60c455b4
|
|
|
|
diff --git a/a b/b
|
|
copy from a
|
|
copy to b
|
|
|
|
git=auto: git patch when using --git:
|
|
|
|
$ echo regular > regular
|
|
$ hg add regular
|
|
$ hg qnew -d '0 0' --git -f git
|
|
|
|
$ cat .hg/patches/git
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 99586d5f048c399e20f81cee41fbb3809c0e735d
|
|
|
|
diff --git a/regular b/regular
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/regular
|
|
@@ -0,0 +1,1 @@
|
|
+regular
|
|
|
|
git=auto: regular patch after qrefresh without --git:
|
|
|
|
$ hg qrefresh -d '0 0'
|
|
|
|
$ cat .hg/patches/git
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 99586d5f048c399e20f81cee41fbb3809c0e735d
|
|
|
|
diff -r 99586d5f048c regular
|
|
--- /dev/null
|
|
+++ b/regular
|
|
@@ -0,0 +1,1 @@
|
|
+regular
|
|
|
|
$ cd ..
|
|
|
|
$ hg init repo-keep
|
|
$ cd repo-keep
|
|
$ echo '[mq]' > .hg/hgrc
|
|
$ echo 'git = KEEP' >> .hg/hgrc
|
|
|
|
git=keep: git patch with --git:
|
|
|
|
$ echo a > a
|
|
$ hg add a
|
|
$ hg qnew -d '0 0' -f --git git
|
|
|
|
$ cat .hg/patches/git
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 0000000000000000000000000000000000000000
|
|
|
|
diff --git a/a b/a
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/a
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
|
|
git=keep: git patch after qrefresh without --git:
|
|
|
|
$ echo a >> a
|
|
$ hg qrefresh -d '0 0'
|
|
|
|
$ cat .hg/patches/git
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 0000000000000000000000000000000000000000
|
|
|
|
diff --git a/a b/a
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/a
|
|
@@ -0,0 +1,2 @@
|
|
+a
|
|
+a
|
|
$ cd ..
|
|
|
|
$ hg init repo-yes
|
|
$ cd repo-yes
|
|
$ echo '[mq]' > .hg/hgrc
|
|
$ echo 'git = yes' >> .hg/hgrc
|
|
|
|
git=yes: git patch:
|
|
|
|
$ echo a > a
|
|
$ hg add a
|
|
$ hg qnew -d '0 0' -f git
|
|
|
|
$ cat .hg/patches/git
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 0000000000000000000000000000000000000000
|
|
|
|
diff --git a/a b/a
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/a
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
|
|
git=yes: git patch after qrefresh:
|
|
|
|
$ echo a >> a
|
|
$ hg qrefresh -d '0 0'
|
|
|
|
$ cat .hg/patches/git
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent 0000000000000000000000000000000000000000
|
|
|
|
diff --git a/a b/a
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/a
|
|
@@ -0,0 +1,2 @@
|
|
+a
|
|
+a
|
|
$ cd ..
|
|
|
|
$ hg init repo-no
|
|
$ cd repo-no
|
|
$ echo '[diff]' > .hg/hgrc
|
|
$ echo 'git = True' >> .hg/hgrc
|
|
$ echo '[mq]' > .hg/hgrc
|
|
$ echo 'git = False' >> .hg/hgrc
|
|
|
|
git=no: regular patch with copy:
|
|
|
|
$ echo a > a
|
|
$ hg add a
|
|
$ hg qnew -d '0 0' -f adda
|
|
$ hg cp a b
|
|
$ hg qnew -d '0 0' -f regular
|
|
|
|
$ cat .hg/patches/regular
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent ef8dafc9fa4caff80f6e243eb0171bcd60c455b4
|
|
|
|
diff -r ef8dafc9fa4c -r a70404f79ba3 b
|
|
--- /dev/null
|
|
+++ b/b
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
|
|
git=no: regular patch after qrefresh with copy:
|
|
|
|
$ hg cp a c
|
|
$ hg qrefresh -d '0 0'
|
|
|
|
$ cat .hg/patches/regular
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent ef8dafc9fa4caff80f6e243eb0171bcd60c455b4
|
|
|
|
diff -r ef8dafc9fa4c b
|
|
--- /dev/null
|
|
+++ b/b
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
diff -r ef8dafc9fa4c c
|
|
--- /dev/null
|
|
+++ b/c
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
|
|
Test how [diff] configuration influence and cause invalid or lossy patches:
|
|
|
|
$ cat <<EOF >> .hg/hgrc
|
|
> [mq]
|
|
> git = AUTO
|
|
> [diff]
|
|
> nobinary = True
|
|
> noprefix = True
|
|
> showfunc = True
|
|
> ignorews = True
|
|
> ignorewsamount = True
|
|
> ignoreblanklines = True
|
|
> unified = 1
|
|
> EOF
|
|
|
|
$ echo ' a' > a
|
|
$ hg qnew prepare -d '0 0'
|
|
$ echo ' a' > a
|
|
$ printf '\0' > b
|
|
$ echo >> c
|
|
$ hg qnew diff -d '0 0'
|
|
|
|
$ cat .hg/patches/prepare
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent cf0bfe72686a47d8d7d7b4529a3adb8b0b449a9f
|
|
|
|
diff -r cf0bfe72686a -r fb9c4422b0f3 a
|
|
--- a/a
|
|
+++ b/a
|
|
@@ -1,1 +1,1 @@
|
|
-a
|
|
+ a
|
|
$ cat .hg/patches/diff
|
|
# HG changeset patch
|
|
# Date 0 0
|
|
# Parent fb9c4422b0f37dd576522dd9a3f99b825c177efe
|
|
|
|
diff --git a/a b/a
|
|
--- a/a
|
|
+++ b/a
|
|
@@ -1,1 +1,1 @@
|
|
- a
|
|
+ a
|
|
diff --git a/b b/b
|
|
index 78981922613b2afb6025042ff6bd878ac1994e85..f76dd238ade08917e6712764a16a22005a50573d
|
|
GIT binary patch
|
|
literal 1
|
|
Ic${MZ000310RR91
|
|
|
|
diff --git a/c b/c
|
|
--- a/c
|
|
+++ b/c
|
|
@@ -1,1 +1,2 @@
|
|
a
|
|
+
|
|
|
|
$ cd ..
|
|
|