From: Scott Lamb <slamb@slamb.org>
To: Benjamin Sergeant <bsergean@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: git-p4 fails when cloning a p4 depo.
Date: Fri, 08 Jun 2007 14:31:32 -0700 [thread overview]
Message-ID: <4669CAB4.5080507@slamb.org> (raw)
In-Reply-To: <1621f9fa0706081113w7bb765ebx74f03a7407b753cb@mail.gmail.com>
Benjamin Sergeant wrote:
> A perforce command with all the files in the repo is generated to get
> all the file content.
> Here is a patch to break it into multiple successive perforce command
> who uses 4K of parameter max, and collect the output for later.
>
> It works, but not for big depos, because the whole perforce depo
> content is stored in memory in P4Sync.run(), and it looks like mine is
> bigger than 2 Gigs, so I had to kill the process.
Hmm. I tried git-p4 out on Sunday, and it definitely didn't do this
then...this commit must have showed up since:
commit 6460cf12df4556f889888b5f0b49e07040747e6f
Author: Han-Wen Nienhuys <hanwen@google.com>
Date: Wed May 23 18:49:35 2007 -0300
Read p4 files in one batch.
I believe HEAD at the time was this:
commit 458e0545cb3dd03af9cd1a61480cbb764639043a
Author: Simon Hausmann <simon@lst.de>
Date: Mon May 28 19:24:57 2007 +0200
Fix typo in listExistingP4Branches that broke sync.
so you might try checking out an old version, and I'll go RTFM on
reading merge history, because I can't figure out when this happened.
>
>
> diff --git a/git-p4 b/git-p4
> index 36fe69a..906b193 100755
> --- a/git-p4
> +++ b/git-p4
> @@ -703,9 +703,22 @@ class P4Sync(Command):
> if not files:
> return
>
> - filedata = p4CmdList('print %s' % ' '.join(['"%s#%s"' %
> (f['path'],
> - f['rev'])
> - for f in files]))
> + # We cannot put all the files on the command line
> + # OS have limitations on the max lenght of arguments
> + # POSIX says it's 4096 bytes, default for Linux seems to be 130 K.
> + # and all OS from the table below seems to be higher than POSIX.
> + # See http://www.in-ulm.de/~mascheck/various/argmax/
No need to hardcode - from Python this is
os.sysconf(os.sysconf_names['SC_ARG_MAX'])
> + chunk = ''
> + filedata = []
> + for i in xrange(len(files)):
> + f = files[i]
> + chunk += '"%s#%s" ' % (f['path'], f['rev'])
> + if len(chunk) > 4000 or i == len(files)-1:
> + data = p4CmdList('print %s' % chunk)
> + if "p4ExitCode" in data[0]:
> + die("Problems executing p4. Error: [%d]." %
> (data[0]['p4ExitCode']));
> + filedata.extend(data)
> + chunk = ''
>
> j = 0;
> contents = {}
> @@ -1486,3 +1499,5 @@ def main():
>
> if __name__ == '__main__':
> main()
> +
> +# vim: set filetype=python sts=4 sw=4 et si :
next prev parent reply other threads:[~2007-06-08 21:31 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-08 16:41 git-p4 fails when cloning a p4 depo Benjamin Sergeant
2007-06-08 18:13 ` Benjamin Sergeant
2007-06-08 21:31 ` Scott Lamb [this message]
2007-06-08 21:34 ` Scott Lamb
2007-06-08 22:04 ` Benjamin Sergeant
2007-06-08 22:25 ` Benjamin Sergeant
2007-06-08 23:33 ` Han-Wen Nienhuys
2007-06-09 0:32 ` Benjamin Sergeant
2007-06-08 22:38 ` Simon Hausmann
2007-06-12 1:07 ` Han-Wen Nienhuys
2007-06-12 1:08 ` Han-Wen Nienhuys
2007-06-12 1:13 ` Han-Wen Nienhuys
2007-06-17 8:11 ` Simon Hausmann
2007-06-17 16:09 ` Benjamin Sergeant
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=4669CAB4.5080507@slamb.org \
--to=slamb@slamb.org \
--cc=bsergean@gmail.com \
--cc=git@vger.kernel.org \
/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).