Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
mercurial-devel
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mercurial
mercurial-devel
Commits
a819b577
Commit
a819b577
authored
5 years ago
by
kiilerix
Browse files
Options
Downloads
Patches
Plain Diff
eol: test-eol-update.t coverage around update --clean using filters ... badly
This will reveal problems and track their fixes.
parent
069cbbb5
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
tests/test-eol-update.t
+164
-4
164 additions, 4 deletions
tests/test-eol-update.t
with
164 additions
and
4 deletions
tests/test-eol-update.t
+
164
−
4
View file @
a819b577
...
...
@@ -26,8 +26,9 @@
>
EOF
>
>
printf
"
first
\n
second
\n
third
\n
"
>
a
.
txt
>
printf
"
f
\r\n
"
>
f
>
hg
commit
--
addremove
-
m 'LF commit'
>
>
cat
>
.
hgeol
<<
EOF
>
[
patterns
]
>
**.
txt
=
CRLF
...
...
@@ -29,8 +30,9 @@
>
hg
commit
--
addremove
-
m 'LF commit'
>
>
cat
>
.
hgeol
<<
EOF
>
[
patterns
]
>
**.
txt
=
CRLF
>
f
=
LF
>
EOF
>
>
printf
"
first
\r\n
second
\r\n
third
\r\n
"
>
a
.
txt
...
...
@@ -34,6 +36,7 @@
>
EOF
>
>
printf
"
first
\r\n
second
\r\n
third
\r\n
"
>
a
.
txt
>
printf
"
f
\n
"
>
f
>
hg
commit
-
m 'CRLF commit'
>
>
cd
..
...
...
@@ -83,6 +86,7 @@
%
hg
init
adding
.
hgeol
adding
a
.
txt
adding
f
$
dotest
LF
%
hg
clone
repo
repo
-
LF
...
...
@@ -86,7 +90,7 @@
$
dotest
LF
%
hg
clone
repo
repo
-
LF
2
files
updated
,
0
files
merged
,
0
files
removed
,
0
files
unresolved
3
files
updated
,
0
files
merged
,
0
files
removed
,
0
files
unresolved
%
a
.
txt
(
before
)
first
\
r
(
esc
)
second
\
r
(
esc
)
...
...
@@ -104,7 +108,7 @@
third
\
r
(
esc
)
%
hg
update
0
merging
a
.
txt
1
files
updated
,
1
files
merged
,
0
files
removed
,
0
files
unresolved
2
files
updated
,
1
files
merged
,
0
files
removed
,
0
files
unresolved
%
a
.
txt
first
third
...
...
@@ -116,6 +120,12 @@
first
-
second
third
diff
--
git
a
/f b/
f
---
a
/
f
+++
b
/
f
@@
-
1
,
1
+
1
,
1
@@
-
f
\
r
(
esc
)
+
f
$
dotest
CRLF
%
hg
clone
repo
repo
-
CRLF
...
...
@@ -119,7 +129,7 @@
$
dotest
CRLF
%
hg
clone
repo
repo
-
CRLF
2
files
updated
,
0
files
merged
,
0
files
removed
,
0
files
unresolved
3
files
updated
,
0
files
merged
,
0
files
removed
,
0
files
unresolved
%
a
.
txt
(
before
)
first
\
r
(
esc
)
second
\
r
(
esc
)
...
...
@@ -137,7 +147,7 @@
third
\
r
(
esc
)
%
hg
update
0
merging
a
.
txt
1
files
updated
,
1
files
merged
,
0
files
removed
,
0
files
unresolved
2
files
updated
,
1
files
merged
,
0
files
removed
,
0
files
unresolved
%
a
.
txt
first
third
...
...
@@ -149,4 +159,154 @@
first
-
second
third
diff
--
git
a
/f b/
f
---
a
/
f
+++
b
/
f
@@
-
1
,
1
+
1
,
1
@@
-
f
\
r
(
esc
)
+
f
Test
in
repo
using
eol
extension
,
while
keeping
an
eye
on
how
filters
are
applied:
$
cd
repo
$
hg
up
-
q -c
-
r
null
$
cat
>
.
hg
/
hgrc
<<
EOF
>
[
extensions
]
>
eol
=
>
EOF
Update
to
revision
0
which
has
no
.
hgeol
.
Unfortunately
,
it
uses
the
filter
from
tip
...
which
evidently
is
wrong:
$
hg
up
-
c
-
r
0
-
v
--
debug
resolving
manifests
branchmerge:
False
,
force:
False
,
partial:
False
ancestor:
000000000000
,
local
:
000000000000
+
,
remote:
15
cbdf8ca3db
calling
hook
preupdate
.
eol:
hgext
.
eol
.
preupdate
.
hgeol:
remote
created
->
g
getting
.
hgeol
filtering
.
hgeol
through
a
.
txt:
remote
created
->
g
getting
a
.
txt
filtering
a
.
txt
through
f:
remote
created
->
g
getting
f
filtering
f
through
3
files
updated
,
0
files
merged
,
0
files
removed
,
0
files
unresolved
$
hg
st
M
f
$
touch
.
hgeol
*
# ensure consistent dirtyness checks ignoring dirstate
$
hg
up
-
C
-
r
0
-
v
--
debug
eol:
detected
change
in
.
hgeol
filtering
.
hgeol
through
filtering
a
.
txt
through
resolving
manifests
branchmerge:
False
,
force:
True
,
partial:
False
ancestor:
15
cbdf8ca3db
+
,
local
:
15
cbdf8ca3db
+
,
remote:
15
cbdf8ca3db
calling
hook
preupdate
.
eol:
hgext
.
eol
.
preupdate
f:
remote
is
newer
->
g
getting
f
1
files
updated
,
0
files
merged
,
0
files
removed
,
0
files
unresolved
$
hg
branch
b
marked
working
directory
as
branch
b
(
branches
are
permanent
and
global
,
did
you
want
a
bookmark
?)
$
hg
ci
-
m b
Merge changes that apply a filter to f:
$ hg merge 1
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
(b
ranch
merge
,
don
'
t forget to commit)
$ hg st
M .hgeol
M a.txt
M f
$ hg diff
diff --git a/.hgeol b/.hgeol
--- a/.hgeol
+++ b/.hgeol
@@ -1,2 +1,3 @@
[patterns]
-**.txt = LF
+**.txt = CRLF
+f = LF
diff --git a/a.txt b/a.txt
--- a/a.txt
+++ b/a.txt
@@ -1,3 +1,3 @@
-first
-second
-third
+first\r (esc)
+second\r (esc)
+third\r (esc)
diff --git a/f b/f
--- a/f
+++ b/f
@@ -1,1 +1,1 @@
-f\r (esc)
+f
Abort the merge with up -C to revision 0 ... but notice how .hgeol changes are
not detected correctly: f is filtered with tolf even though there is no filter
for f in revision 0, and it thus ends up with working directory changes.
$ touch .hgeol * # ensure consistent dirtyness checks ignoring dirstate
$ hg up -C -r 0 -v --debug
eol: detected change in .hgeol
resolving manifests
branchmerge: False, force: True, partial: False
ancestor: 1db78bdd3bd6+, local: 1db78bdd3bd6+, remote: 15cbdf8ca3db
calling hook preupdate.eol: hgext.eol.preupdate
.hgeol: remote is newer -> g
getting .hgeol
filtering .hgeol through
a.txt: remote is newer -> g
getting a.txt
filtering a.txt through
f: remote is newer -> g
getting f
filtering f through
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ touch .hgeol *
$ hg st --debug
eol: detected change in .hgeol
filtering .hgeol through
filtering a.txt through
M f
$ hg diff
diff --git a/f b/f
--- a/f
+++ b/f
@@ -1,1 +1,1 @@
-f\r (esc)
+f
Workaround: Update again - this will read the right .hgeol:
$ touch .hgeol *
$ hg up -C -r 0 -v --debug
eol: detected change in .hgeol
filtering .hgeol through
filtering a.txt through
resolving manifests
branchmerge: False, force: True, partial: False
ancestor: 15cbdf8ca3db+, local: 15cbdf8ca3db+, remote: 15cbdf8ca3db
calling hook preupdate.eol: hgext.eol.preupdate
f: remote is newer -> g
getting f
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ touch .hgeol *
$ hg st --debug
eol: detected change in .hgeol
filtering .hgeol through
filtering a.txt through
$ cd ..
$ rm -r repo
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment