[PATCH] convert: Make P4 conversion cope with keywords, binary files and symbolic links

Patrick Mézard pmezard at gmail.com
Mon Apr 13 14:48:37 UTC 2009


Frank A. Kingswood a écrit :
> Frank Kingswood wrote:
>> # HG changeset patch
>> # User Frank Kingswood <frank at kingswood-consulting.co.uk>
>> # Date 1238842989 -3600
>> # Node ID 0670df1e3f5de0b3dc35cb853ad203a6ac2206a4
>> # Parent  f5d4f59a9996ea0a4e7571f0a30596e4917a70ed
>> convert: Make P4 conversion cope with keywords, binary files and symbolic links.
>> Now handles errors from p4 during conversion more gracefully.
>> If keyword expansion is enabled in a P4 file then keywords will be unexpanded in hg.
>> Added testcase for p4 filetypes and keyword (un)expansion.
>> Set executable bit on test-convert-p4.

I have attached the log for test-convert-p4-filetypes on MacOSX. Here is the annotated inline diff:

> --- test-convert-p4-filetypes.out	2009-04-13 16:19:02.000000000 +0200
> +++ test-convert-p4-filetypes.err	2009-04-13 16:31:09.000000000 +0200
> @@ -61,13 +61,13 @@
>  add //depot/test-mercurial-import/file_text+C#1
>  add //depot/test-mercurial-import/file_text+D#1
>  add //depot/test-mercurial-import/file_text+F#1
> -add //depot/test-mercurial-import/file_text+S#1
> -add //depot/test-mercurial-import/file_text+S2#1
>  add //depot/test-mercurial-import/file_text+k#1
>  add //depot/test-mercurial-import/file_text+ko#1
>  add //depot/test-mercurial-import/file_text+kx#1
>  add //depot/test-mercurial-import/file_text+l#1
>  add //depot/test-mercurial-import/file_text+m#1
> +add //depot/test-mercurial-import/file_text+S#1
> +add //depot/test-mercurial-import/file_text+S2#1
>  add //depot/test-mercurial-import/file_text+w#1
>  add //depot/test-mercurial-import/file_text+x#1
>  add //depot/test-mercurial-import/file_ubinary#1
> @@ -153,13 +153,13 @@
>  edit //depot/test-mercurial-import/file_text+C#2
>  edit //depot/test-mercurial-import/file_text+D#2
>  edit //depot/test-mercurial-import/file_text+F#2
> -edit //depot/test-mercurial-import/file_text+S#2
> -edit //depot/test-mercurial-import/file_text+S2#2
>  edit //depot/test-mercurial-import/file_text+k#2
>  edit //depot/test-mercurial-import/file_text+ko#2
>  edit //depot/test-mercurial-import/file_text+kx#2
>  edit //depot/test-mercurial-import/file_text+l#2
>  edit //depot/test-mercurial-import/file_text+m#2
> +edit //depot/test-mercurial-import/file_text+S#2
> +edit //depot/test-mercurial-import/file_text+S2#2
>  edit //depot/test-mercurial-import/file_text+w#2
>  edit //depot/test-mercurial-import/file_text+x#2
>  edit //depot/test-mercurial-import/file_ubinary#2


They come from FS case-insensitivity and can be fixed by appending a $T2 instead of $T where

T2=`echo $T | tr [:upper:] [:lower:]`


> @@ -273,18 +273,22 @@
>  converting...
>  1 initial
>  0 keywords
> -rev=1 desc="keywords" tags="tip" files="crazy_symlink+k file_binary file_binary+k file_binary+kx file_binary+x file_ctext file_cxtext file_ktext file_kxtext file_ltext file_resource file_text file_text+C file_text+D file_text+F file_text+S file_text+S2 file_text+k file_text+ko file_text+kx file_text+l file_text+m file_text+w file_text+x file_ubinary file_unicode file_uresource file_utf16 file_uxbinary file_xbinary file_xltext file_xtext file_xunicode file_xutf16 target_symlink target_symlink+k"
> +rev=1 desc="keywords" tags="tip" files="crazy_symlink+k file_binary file_binary+k file_binary+kx file_binary+x file_ctext file_cxtext file_ktext file_kxtext file_ltext file_text file_text+C file_text+D file_text+F file_text+S file_text+S2 file_text+k file_text+ko file_text+kx file_text+l file_text+m file_text+w file_text+x file_ubinary file_unicode file_utf16 file_uxbinary file_xbinary file_xltext file_xtext file_xunicode file_xutf16 target_symlink target_symlink+k"


file_resource and file_uresource are missing on macosx, I don't know why


>  rev=0 desc="initial" tags="" files="file_binary file_binary+k file_binary+kx file_binary+x file_ctext file_cxtext file_ktext file_kxtext file_ltext file_resource file_symlink file_symlink+k file_text file_text+C file_text+D file_text+F file_text+S2 file_text+k file_text+ko file_text+kx file_text+l file_text+m file_text+w file_text+x file_ubinary file_unicode file_uresource file_utf16 file_uxbinary file_xbinary file_xltext file_xtext file_xunicode file_xutf16 target_symlink target_symlink+k"


I think grep -H is a GNU extension, can we avoid it ?


>  % revision 0
>  36 files updated, 0 files merged, 0 files removed, 0 files unresolved
>  ==> dst/file_binary <==
> -this is binary
> +-n this is binary
> +


I cannot explain this.


>  ==> dst/file_binary+k <==
> -this is binary+k
> +-n this is binary+k
> +
>  ==> dst/file_binary+kx <==
> -this is binary+kx
> +-n this is binary+kx
> +
>  ==> dst/file_binary+x <==
> -this is binary+x
> +-n this is binary+x
> +
>  ==> dst/file_ctext <==
>  this is ctext
>  
> @@ -301,8 +305,7 @@
>  this is ltext
>  
>  ==> dst/file_resource <==
> -this is resource
> -
> +^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
>  ==> dst/file_symlink <==
>  this is target symlink
>  
> @@ -352,8 +355,7 @@
>  this is unicode
>  
>  ==> dst/file_uresource <==
> -this is uresource
> -
> +^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
>  ==> dst/file_utf16 <==
>  M-fM-!M-4M-gM-^MM-)M-fM-$M- M-bM-^AM-3M-gM-^QM-5M-cM-^EM-&M-`M-(M-6
>  ==> dst/file_uxbinary <==
> @@ -374,9 +376,10 @@
>  ==> dst/file_xutf16 <==
>  M-fM-!M-4M-gM-^MM-)M-fM-$M- M-bM-^AM-3M-gM-^UM-8M-fM-^YM-4M-cM-^XM-1
>  % revision 1
> -36 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +34 files updated, 0 files merged, 0 files removed, 0 files unresolved
>  ==> dst/file_binary <==
> -this is binary$Id$
> +-n this is binary
> +$Id$
>  $Header$
>  $Date$
>  $DateTime$
> @@ -386,7 +389,8 @@
>  $Header$$Header$Header$
>  
>  ==> dst/file_binary+k <==
> -this is binary+k$Id$
> +-n this is binary+k
> +$Id$
>  $Header$
>  $Date$
>  $DateTime$
> @@ -396,7 +400,8 @@
>  $Header$$Header$Header$
>  
>  ==> dst/file_binary+kx <==
> -this is binary+kx$Id$
> +-n this is binary+kx
> +$Id$
>  $Header$
>  $Date$
>  $DateTime$
> @@ -406,7 +411,8 @@
>  $Header$$Header$Header$
>  
>  ==> dst/file_binary+x <==
> -this is binary+x$Id$
> +-n this is binary+x
> +$Id$
>  $Header$
>  $Date$
>  $DateTime$
> @@ -471,16 +477,7 @@
>  $Header$$Header$Header$
>  
>  ==> dst/file_resource <==
> -this is resource
> -$Id$
> -$Header$
> -$Date$
> -$DateTime$
> -$Change$
> -$File$
> -$Revision$
> -$Header$$Header$Header$
> -
> +^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
>  ==> dst/file_symlink <==
>  this is target symlink
>  $Id$
> @@ -669,16 +666,7 @@
>  $Header$$Header$Header$
>  
>  ==> dst/file_uresource <==
> -this is uresource
> -$Id$
> -$Header$
> -$Date$
> -$DateTime$
> -$Change$
> -$File$
> -$Revision$
> -$Header$$Header$Header$
> -
> +^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
>  ==> dst/file_utf16 <==
>  M-fM-!M-4M-gM-^MM-)M-fM-$M- M-bM-^AM-3M-gM-^QM-5M-cM-^EM-&M-`M-(M-6M-dM-$M-$M-bM-^QM-$M-bM-^PM-^JM-fM-^UM-^HM-fM-^QM-!M-gM-^IM-%M-`M-(M-$M-dM-^PM-$M-gM-^QM-!M-bM-^QM-%M-bM-^PM-^JM-fM-^EM-^DM-fM-^UM-4M-fM-%M-^TM-fM-^UM--M-`M-(M-$M-dM-^LM-$M-fM-^EM-(M-fM-^]M-.M-bM-^QM-%M-bM-^PM-^JM-fM-%M-^FM-fM-^UM-,M-`M-(M-$M-eM-^HM-$M-gM-^YM-%M-gM-^MM-)M-fM-=M-)M-bM-^QM-.M-bM-^PM-^JM-fM-^UM-^HM-fM-^QM-!M-gM-^IM-%M-bM-^PM-$M-fM-^UM-^HM-fM-^QM-!M-gM-^IM-%M-dM- M-$M-fM-^EM-%M-fM-^UM-$M-bM-^QM-2
>  ==> dst/file_uxbinary <==


--
Patrick Mézard
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: test-convert-p4-filetypes.err
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20090413/ee631541/attachment.ksh>


More information about the Mercurial-devel mailing list