git-p4 useclientspec broken?
From: Laurent Charrière <hidden>
Date: 2016-06-15 22:53:04
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 $ 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) 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' 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?