git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-p4: check for existence of repo dir before trying to create [Was: Asking again... [Re: how to properly import perforce history?]]

From
KGKevin Green <kevin.t.green@morganstanley.com>
Date
Jun 11, 2007, 20:51 UTC
Message-ID
<20070611205140.GN25093@menevado.ms.com>
In-Reply-To
<200706112159.34181.simon@lst.de>
On 06/11/07 15:59:30, Simon Hausmann wrote:
Show 29 quoted lines
> On Monday 11 June 2007 21:44:50 you wrote:
> > On 06/11/07 10:56:33, Simon Hausmann wrote:
> > > *plug* You could try with git-p4 from http://repo.or.cz/w/fast-export.git
> > > . It should be just a matter of calling
> >
> > hmmm....  Failed with this:
> >
> > $ git clone http://repo.or.cz/w/fast-export.git
> > Initialized empty Git repository in /var/tmp/kgreen/dev/fast-export/.git/
> > /ms/dist/fsf/PROJ/git/1.5.2.1/bin/git-clone: line 381: cd:
> > /var/tmp/kgreen/dev/fast-export/.git/refs/remotes/origin: No such file or
> > directory
> > fatal: Not a valid object name HEAD
> >
> > I then tried the mirror I found at the git revision history site:
> >
> > $ git clone http://repo.or.cz/r/fast-export.git
> > Initialized empty Git repository in /var/tmp/kgreen/dev/fast-export/.git/
> > Getting alternates list for http://repo.or.cz/r/fast-export.git
> > Getting pack list for http://repo.or.cz/r/fast-export.git
> > Getting index for pack 66d95396fcacd053b385a4ed71edb2b1bc15e074
> > ...
> >
> >
> > Don't know if they're the same, but I'll give it a shot now...
> 
> The latter seems indeed like the right URL for a HTTP based clone off of 
> repo.or.cz. I would recommend using the git protocol though if possible :)
> 
Not possible unfortunately...
Anyway, grabbed git-p4 and tried it three ways:
1) git-p4 clone //depot/path/repo@all
  I don't like this because it creates a git repository under "repo" subdir.
  To make a long store short, we have a very strict namespace for
  development...  The path ends in src and I'd like the .git repository to be
  under src.  
So, I tried this one level up:
2) git-p4 clone //depot/path/repo@all src
	But that dies with a mkdir error because 'src' already exists.  I want to
	submit a patch, but wanted to check with you first to see if that's the
	desired behaviour (I don't think it should fail though) because maybe you
	want to stop someone from scribbling on an already present git repository?
	I would want to just go for a "if it doesn't exist yet, create it,
	otherwise, forge ahead" behaviour.  I attach the patch after my .sig...
3) Tried without clone:

$ git init $ git-p4 sync //depot/path/repo@all

	This looks like it's pulling down all the revisions, but it doesn't
	actually put any code in there.  I'm left with the same situation as
	git-p4import.py.
	
	Actually, not even.  I don't even have the commit history...

I would like to get 3 working properly because it's clunky to do #2. But with the patch, #2 does what I want and gets me started...

Patch attached.  Please let me know what I'm doing wrong with #3 above...
Thanks
--Kevin
>From c14f906b255a310db0c674ce567fd776aad8f397 Mon Sep 17 00:00:00 2001
From: Kevin Green <Kevin.Green@morganstanley.com>
Date: Mon, 11 Jun 2007 16:48:07 -0400
Subject: [PATCH] git-p4: check for existence of repo dir before trying to create
When using git-p4 in this manner:
git-p4 clone //depot/path/project myproject

If "myproject" already exists as a dir, but not a valid git repo, it fails to create the directory.

Signed-off-by: Kevin Green <Kevin.Green@morganstanley.com>
---
 git-p4 |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/git-p4 b/git-p4
index e380c14..cababc7 100755
--- a/git-p4
+++ b/git-p4
@@ -1400,7 +1400,8 @@ class P4Clone(P4Sync):
             self.cloneDestination = self.defaultDestination(args)

         print "Importing from %s into %s" % (', '.join(depotPaths), self.cloneDestination)
-        os.makedirs(self.cloneDestination)
+        if not os.path.exists(self.cloneDestination):
+            os.makedirs(self.cloneDestination)
         os.chdir(self.cloneDestination)
         system("git init")
         self.gitdir = os.getcwd() + "/.git"
--
1.5.2.1
Previous: Alex RiesenNext: Simon Hausmann
Message 15 of 16 in “how to properly import perforce history...”
  1. Kevin GreenJun 8, 2007
  2. Asking again... [Re: how to properly import perforce history?]Kevin Green, Jun 11, 2007
  3. Simon HausmannJun 11, 2007
  4. Alex RiesenJun 11, 2007
  5. Simon HausmannJun 11, 2007
  6. Alex RiesenJun 11, 2007
  7. Scott LambJun 11, 2007
  8. Alex RiesenJun 11, 2007
  9. Scott LambJun 11, 2007
  10. Simon HausmannJun 11, 2007
  11. Han-Wen NienhuysJun 12, 2007
  12. Alex RiesenJun 12, 2007
  13. Kevin GreenJun 11, 2007
  14. Alex RiesenJun 11, 2007
  15. git-p4: check for existence of repo dir before trying to create [Was: Asking again... [Re: how to properly import perforce history?]]Kevin Green, Jun 11, 2007
  16. Simon HausmannJun 11, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.