Mercurial > hg
view tests/test-patch-offset.t @ 16749:eab8ca175262
bdiff: use Py_ssize_t instead of int
Reduces the conversion warnings
mercurial/bdiff.c(61) : warning C4244: '=' : conversion from '__int64' to
'int', possible loss of data
mercurial/bdiff.c(307) : warning C4244: 'function' : conversion from
'Py_ssize_t' to 'int', possible loss of data
mercurial/bdiff.c(308) : warning C4244: 'function' : conversion from
'Py_ssize_t' to 'int', possible loss of data
mercurial/bdiff.c(362) : warning C4244: '+=' : conversion from '__int64' to
'int', possible loss of data
mercurial/bdiff.c(380) : warning C4244: '=' : conversion from '__int64' to
'int', possible loss of data
mercurial/bdiff.c(381) : warning C4244: 'function' : conversion from '__int64'
to 'uint32_t', possible loss of data
mercurial/bdiff.c(382) : warning C4244: 'function' : conversion from '__int64'
to 'uint32_t', possible loss of data
mercurial/bdiff.c(416) : warning C4244: '=' : conversion from 'Py_ssize_t' to
'int', possible loss of data
to
mercurial/bdiff.c(383) : warning C4244: 'function' : conversion from '__int64'
to 'uint32_t', possible loss of data
mercurial/bdiff.c(384) : warning C4244: 'function' : conversion from '__int64'
to 'uint32_t', possible loss of data
mercurial/bdiff.c(385) : warning C4244: 'function' : conversion from
'Py_ssize_t' to 'uint32_t', possible loss of data
on the three putbe32() calls in the function bdiff
when compiling for Windows x64 target using the Microsoft compiler.
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Tue, 15 May 2012 22:36:27 +0200 |
parents | 0705f2ac79d6 |
children | f2719b387380 |
line wrap: on
line source
$ cat > writepatterns.py <<EOF > import sys > > path = sys.argv[1] > patterns = sys.argv[2:] > > fp = file(path, 'wb') > for pattern in patterns: > count = int(pattern[0:-1]) > char = pattern[-1] + '\n' > fp.write(char*count) > fp.close() > EOF prepare repo $ hg init a $ cd a These initial lines of Xs were not in the original file used to generate the patch. So all the patch hunks need to be applied to a constant offset within this file. If the offset isn't tracked then the hunks can be applied to the wrong lines of this file. $ python ../writepatterns.py a 34X 10A 1B 10A 1C 10A 1B 10A 1D 10A 1B 10A 1E 10A 1B 10A $ hg commit -Am adda adding a This is a cleaner patch generated via diff In this case it reproduces the problem when the output of hg export does not import patch $ hg import -v -m 'b' -d '2 0' - <<EOF > --- a/a 2009-12-08 19:26:17.000000000 -0800 > +++ b/a 2009-12-08 19:26:17.000000000 -0800 > @@ -9,7 +9,7 @@ > A > A > B > -A > +a > A > A > A > @@ -53,7 +53,7 @@ > A > A > B > -A > +a > A > A > A > @@ -75,7 +75,7 @@ > A > A > B > -A > +a > A > A > A > EOF applying patch from stdin patching file a Hunk #1 succeeded at 43 (offset 34 lines). Hunk #2 succeeded at 87 (offset 34 lines). Hunk #3 succeeded at 109 (offset 34 lines). a created 189885cecb41 compare imported changes against reference file $ python ../writepatterns.py aref 34X 10A 1B 1a 9A 1C 10A 1B 10A 1D 10A 1B 1a 9A 1E 10A 1B 1a 9A $ diff aref a