On Mon, Oct 10, 2016 at 10:38:45AM +0900, Osamu Aoki wrote:
...
> commit refs/heads/test_ticket_d17d6e5b17
> mark :37455
> committer jan.nijtmans <jan.nijtmans> 1353531216 +0000
> data 82
> Just commit some weird filenames, even one with a newline in it, to
^^^^^^^
> test the code.
^^^^^^^^^^^^^
Now I realize.
> from :37577
> M 100644 :1050 :abc
> M 100644 :37588 abc
> def.txt
I see this should have been "abc\ndef.txt" instead of "abc", real NL
and "def.txt".
I tested "git fast-export" with filename with NL in it.
| commit refs/heads/master
| mark :4
| author Osamu Aoki <[email protected]> 1476073435 +0900
| committer Osamu Aoki <[email protected]> 1476073435 +0900
| data 7
| update
| from :2
| M 100644 :3 "foo\nbar.txt"
It generate file like this. So when ever you see NL, this escaping
needs to happen and they are always double quoted (normally there are no
double quote). Quick check indicates:
NL QUOTED "\n"
TAB QUOTED "\t"
\ QUOTED "\\"
SPACE QUOTED " "
For example
| M 100644 :8 "space space.txt"
"fossil export" and "fossil import" need to support these features.
As I read git-ls-files manpage, its OUTPUT has following content:
When -z option is not used, TAB, LF, and backslash characters in
pathnames are represented as \t, \n, and \\, respectively.
So at least addressing above 4 cases should do good.
if filename_has_specials(filenamestring)
filenamestring = quote_and_escape(filenamestring);
Osamu
PS: Immediately after posing here, I got many replies from SPAM :-(
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users