All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pete Wyckoff <pw@padd.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Tor Arvid Lund <torarvid@gmail.com>,
	Vitor Antunes <vitor.hda@gmail.com>,
	git@vger.kernel.org
Subject: Re: [PATCH v2 7/8] git-p4: decode p4 wildcard characters
Date: Thu, 24 Feb 2011 07:12:10 -0500	[thread overview]
Message-ID: <20110224121210.GA16475@arf.padd.com> (raw)
In-Reply-To: <7vbp25hsk6.fsf@alter.siamese.dyndns.org>

gitster@pobox.com wrote on Mon, 21 Feb 2011 15:32 -0800:
> Pete Wyckoff <pw@padd.com> writes:
> 
> > There are four wildcard characters in p4.  Files with these
> > characters can be added to p4 repos using the "-f" option.
> > They are stored in %xx notation, and when checked out, p4
> > converts them back to normal.
> >
> > This patch does the same thing when importing into git,
> > converting the four special characters.  Without this change,
> > the files appear with literal %xx in their names.
> >
> > Be careful not to produce "*" in filenames on windows.  That
> > will fail.
> 
> > +    # P4 wildcards are not allowed in filenames.  P4 complains
> > +    # if you simply add them, but you can force it with "-f", in
> > +    # which case it translates them into %xx encoding internally.
> > +    # Search for and fix just these four characters.  Do % last so
> > +    # that fixing it does not inadvertently create new %-escapes.
> > +    #
> > +    def wildcard_decode(self, path):
> > +        # Cannot have * in a filename in windows; untested as to
> > +        # what p4 would do in such a case.
> > +        if not self.isWindows:
> > +            path = path.replace("%2A", "*")
> 
> I'll queue the patch as-is, but perhaps we can ask for help from people
> who have access to P4 on both non-Windows and Windows to run a small test
> to determine what happens in the native client?
> 
>  1. On a non-Windows client, add a path with '*' in it to the depot;
>     perhaps "p4 add" might fail at this point, in which case we don't
>     need to worry about this issue at all.
>  
>  2. Create a p4 client on Windows against that depot, and sync it; unless
>     the previous step failed, we will see what happens (I would imagine it
>     either dies or mangles the pathname and warns), so that we have
>     something to emulate.
> 
> and then the quoted part can be further refined in a separate patch later.

I tried this myself in a VM when Tor Arvid pointed out the
problem with Windows:

http://article.gmane.org/gmane.comp.version-control.git/166374

1.  "*" is acceptable in filenames, but users must use "p4 add -f"
    to indicate that they really want that wildcard character in
    the filename.

2.  Windows clients fail to create the file in "p4 sync".  The
    error is:

    open for write: c:\Documents and Settings\Administrator\Desktop\file*star:
    The filename, directory name, or volume label syntax is incorrect.

The behavior for git-p4 I chose is to sync the file but leave
the name with its encoded %2A.  If we think it is better to
duplicate p4's failure, we can simply try to create the file
and let the OS produce the same error message.

		-- Pete

  reply	other threads:[~2011-02-24 12:12 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-19 13:17 [PATCH v2 0/8] git-p4 fixes and enhancements Pete Wyckoff
2011-02-19 13:17 ` [PATCH v2 1/8] git-p4: test script Pete Wyckoff
2011-02-19 13:17 ` [PATCH v2 2/8] git-p4: fix key error for p4 problem Pete Wyckoff
2011-02-19 13:17 ` [PATCH v2 3/8] git-p4: add missing newline in initial import message Pete Wyckoff
2011-02-19 13:17 ` [PATCH v2 4/8] git-p4: accommodate new move/delete type in p4 Pete Wyckoff
2011-02-21 23:32   ` Junio C Hamano
2011-02-19 13:17 ` [PATCH v2 5/8] git-p4: reinterpret confusing p4 message Pete Wyckoff
2011-02-23  8:26   ` Tor Arvid Lund
2011-02-19 13:17 ` [PATCH v2 6/8] git-p4: better message for "git-p4 sync" when not cloned Pete Wyckoff
2011-02-19 13:18 ` [PATCH v2 7/8] git-p4: decode p4 wildcard characters Pete Wyckoff
2011-02-21 23:32   ` Junio C Hamano
2011-02-24 12:12     ` Pete Wyckoff [this message]
2011-02-24 13:54       ` Tor Arvid Lund
2011-02-24 16:40         ` Junio C Hamano
2011-02-27 21:16           ` Pete Wyckoff
2011-02-19 13:18 ` [PATCH v2 8/8] git-p4: support clone --bare Pete Wyckoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110224121210.GA16475@arf.padd.com \
    --to=pw@padd.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=torarvid@gmail.com \
    --cc=vitor.hda@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.