git.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).