[darcs-users] [patch258] Bug fix: treat filenames in darcs-2 patc... (and 1 more)

Reinier Lamers bugs at darcs.net
Fri Jun 18 21:32:05 UTC 2010

Reinier Lamers <tux_rocker at reinier.de> added the comment:


These patches are ready to go in, except the "export LC_ALL=..." issue. See 
below for more explanation.

>New patches:

The two non-test patches indeed haven't changed so I'll skip those.

>[Slightly more aggresive and extendable issue1763 test.
>Eric Kow <kowey at darcs.net>**20100615131544
> Ignore-this: 797a11b3575fe4062e1a280f432e6d40
>] hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 30
> . lib
>+abort_windows # FIXME! We should figure out what's going on here

I don't like such comments, but then, we have to hint somewhere that there's 
not really a good reason why this shouldn't work on Windows. Making a ticket 
clutters the issue tracker, so we make such a comment.

The reason that it clutters the issue tracker is that it'll never get done 
anyway. We really need some Windows serfs to obey the Windows Czar :).

>hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 34
>-darcs init --repo S
>+function check_consistent_filename {
>+  export LC_ALL='en.UTF8'
>+  count=`darcs changes -v | grep 'hunk .*\.lisp' | sed -e 's/.*hunk //' -e
> 's/.lisp.*//' | sort | uniq | wc -l`
> +  test $count -eq 1

This functions checks if there is only one representation in the output of 
'darcs changes'. The idea is that if there are multiple ones, it must be an 
encoding problem (like one well-encoded and one double-encoded with UTF-8).

It has a problem, however, in that the locale "en.UTF8" is very unlikely to 
exist. "en_US.UTF8" does exist and is the default on most Linux distros, but I 
don't think that it is actually required to be present. And then there are 
also operating systems that aren't Linux distros at all. Do we have to change 
locale at all? The file names should be equal, no matter what the locale is, 
shouldn't they?

> # Set up a repo with 3 patches to a non-ASCII-named file
> cd R
>hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 48
> darcs record -a -m "Add"
> echo hi >> kitöltés.lisp
> darcs record -a -m "First edit"
>+cd ..
>+rm -rf S S2 S3
>+darcs get R S
>+darcs get R S2
>+darcs get R S3
>+cd R
> echo hi >> kitöltés.lisp
> darcs record -a -m "Second edit"

So yeah, we make three copies of a repo with 2 patches and then make a third 
patch in the original.

>hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 58
>+cd ..
> # From another repo, pull the first two, edit, pull the third to get a
> # conflict, pull again to get the crash

>hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 62
>-cd ../S
>-echo yyn | darcs pull --interactive ../R
>+cd S
> echo hello >> kitöltés.lisp
> darcs record -a -m "My edit"
> darcs pull -a ../R
>hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 67
> darcs pull -a ../R
>+cd ..

Adding check_consistent_filename shouldn't be necessary because the earlier 
case actually crashed darcs in case something was wrong. But it doesn't hurt 

>hunk ./tests/issue1763-pull-fails-on-non-ascii-filenames.sh 70
>+# duplicates
>+cd S2
>+echo hi >> kitöltés.lisp
>+darcs record -a -m "My duplicate edit"
>+darcs pull -a ../R
>+darcs pull -a ../R
>+cd ..

This checks duplicate patches. This test indeed fails without the functional 
changes and succeeds with them.


Darcs bug tracker <bugs at darcs.net>

More information about the darcs-users mailing list