All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pete Wyckoff <pw@padd.com>
To: "Laurent Charrière" <lcharriere@promptu.com>
Cc: git@vger.kernel.org
Subject: Re: git-p4 useclientspec broken?
Date: Tue, 14 Feb 2012 07:36:32 -0500	[thread overview]
Message-ID: <20120214123632.GA5285@padd.com> (raw)
In-Reply-To: <4F39AF04.5080607@promptu.com>

lcharriere@promptu.com wrote on Mon, 13 Feb 2012 16:47 -0800:
> Since I've upgraded to 1.7.9 (on OS X Lion, FWIW), git-p4 submit
> fails to apply any patches if I use useclientspec=true when cloning.
> 
> My p4 client is as follows:
> 
> Client:	malibu
> (...)
> Root:	/Users/lcharriere/Documents/Perforce/all
> (...)
> View:
> 	//sandbox/... //malibu/sandbox/...
> 	//depot/... //malibu/depot/...
> 
> Sequence of steps to reproduce:
> 
> $ git p4 clone //sandbox/lcharriere/foo --use-client-spec
> $ cd foo && find .
> ./.git
> (...)
> ./sandbox/lcharriere/foo/.gitignore
> ./sandbox/lcharriere/foo/foo.py
> 
> -- This is new behavior to me, BTW. Previously, I would have seen
> ./.git
> (...)
> ./.gitignore
> ./foo.py

I did try to clean up our handling of --use-client-spec.  This
behavior was done on purpose, but maybe I didn't the implications
on people who were relying on the old way.  In particular the
behavior of multi-line view specs and those with + and - was
largely unpredictable.

The client spec now has absolute control over what files get put
where in the git repo, just like in p4.  The argument
"//sandbox/lcharriere/foo" in your clone command limits the scope
of what is checked out, but does not affect where it is placed.

You can get the git layout you expect with this view:

    //sandbox/lcharriere/foo/... //malibu/...

or simply just don't use --use-client-spec at all:

    git p4 clone //sandbox/lcharriere/foo

Is this new behavior bad for you?  Suggestions welcome.

> $ cat "test" >> sandbox/lcharriere/foo/.gitignore
> $ git commit -a -m "test"
> git commit -a -m "test"
> [master 7398144] test
>  1 files changed, 1 insertions(+), 0 deletions(-)
> $ git p4 submit
> Perforce checkout for depot path //sandbox/lcharriere/foo/ located
> at /Users/lcharriere/Documents/Perforce/all/sandbox/lcharriere/foo/
> Synchronizing p4 checkout...
> ... - file(s) up-to-date.
> Applying 739814457a8faa84dc0bddd830f671569576b177 test
> 
> sandbox/lcharriere/foo/.gitignore - file(s) not on client.
> error: sandbox/lcharriere/foo/.gitignore: No such file or directory
> Unfortunately applying the change failed!
> What do you want to do?
> [s]kip this patch / [a]pply the patch forcibly and with .rej files /
> [w]rite the patch to a file (patch.txt)

This is definitely a bug.  I reproduced a similar problem.

> I tried to follow what's going on with pdb:
> * self.depotPath is //sandbox/lcharriere/foo, so git-p4 chdir's to
> /Users/lcharriere/Documents/Perforce/all/sandbox/lcharriere/foo/
> * In P4Submit.applyCommit, line 926 is:
> p4_edit(path)
> At this point path is 'sandbox/lcharriere/foo/.gitignore'

The path should be plain old ".gitignore", as you noticed.

> I'm guessing this is why the p4 executable doesn't find it. The path
> should be .gitignore. Is it possible that the new behavior I
> mentioned above of reproducing the depot hierarchy when
> useclientspec is true is having unintended side effects, or is a
> bug?

I'll get a patch out tonight or soon.  Need to do gobs of testing
on the submit path to make sure nothing else is broken.

		-- Pete

  reply	other threads:[~2012-02-14 12:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-14  0:47 git-p4 useclientspec broken? Laurent Charrière
2012-02-14 12:36 ` Pete Wyckoff [this message]
2012-02-14 23:25   ` Laurent Charrière

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=20120214123632.GA5285@padd.com \
    --to=pw@padd.com \
    --cc=git@vger.kernel.org \
    --cc=lcharriere@promptu.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.