From: Craig Boston <craig@olyun.gank.org>
To: git@vger.kernel.org
Subject: Efficient way to import snapshots?
Date: Mon, 30 Jul 2007 13:07:11 -0500 [thread overview]
Message-ID: <20070730180710.GA64467@nowhere> (raw)
Hello, I'm seeking some input from git users/developers to try and solve
a problem I'm encountering. I'm new with git, having used quite a bit
of Subversion and SVK in the past, but have heard good things and
decided to give it a try.
First, a little bit about what I'm trying to accomplish. There is a
large source tree -- FreeBSD to be specific -- which is maintained in
CVS. I want to have several local branches where I can develop specific
projects. Each of these branches should derive from either the HEAD of
the CVS tree, or from one of the release branches (known as the -STABLE
branch for a particular version of the OS).
That said, I really don't want to have to import the entire CVS
repository. It has many, many branches and tags that I'm not interested
in, and I really don't need the entire history of the project. I don't
even really need individual commit history. I can see that easily enough
on cvsweb. Repo size is a big factor as I need to replicate it between
several different work machines, some of which don't have unlimited disk
space.
What I'm currently doing (using SVK) is nightly, taking a snapshot using
cvsup of each of the 3 branches that I care about, then using "svk
import" to pull the snapshot into a local branch that I treat as a
vendor branch. My projects are branched off those and I regularly
smerge changes over. It works pretty well for me, the only downside is
that svk isn't exactly fast, having to load lots of perl modules for
every command.
I'd like to do something similar with git -- I like the idea of it
having many less dependencies that must be installed, and it's supposed
to be quite a bit faster when dealing with working copies. From reading
about it I think it may also be easier to generate diffs of my branches
from their origins.
So far the main snag I've found is that AFAIK there's no equivalent to
"svk import" to load a big tree (~37000 files) into a branch and commit
the changes. Here's the procedure I've come up with:
cd /path/to/git/repo
git checkout vendor_branch_X
git rm -r .
cp -R /path/to/cvs/checkout_X/* ./
git add .
git commit -m"Import yyyymmdd snapshot"
However this has quite a few disadvantages when compared to svk. The
first is that I have to checkout into a working directory and then copy
the files from the cvs checkout. It is also considerably slower than
svk import, about 7-8 times on average. When there are a lot of
changes I've seen the git process use upwards of 1GB of memory; it
actually died the first time I tried it because I didn't have any swap
configured.
Now, I don't have very much experience with git, so for my question: Is
there a better way to do this? Either importing a lot of files into
git, or a better solution for that I'm trying to do.
Any pointers would be much appreciated.
Thanks!
Craig
next reply other threads:[~2007-07-30 18:17 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-30 18:07 Craig Boston [this message]
2007-07-30 18:56 ` Efficient way to import snapshots? Linus Torvalds
2007-07-30 19:29 ` Craig Boston
2007-07-30 19:52 ` Linus Torvalds
2007-07-30 20:10 ` Craig Boston
2007-07-30 21:29 ` Junio C Hamano
2007-07-30 21:49 ` Craig Boston
2007-07-30 21:04 ` Junio C Hamano
2007-07-30 23:19 ` Linus Torvalds
2007-07-30 21:55 ` Junio C Hamano
2007-07-30 23:27 ` Linus Torvalds
2007-07-30 23:59 ` Junio C Hamano
2007-07-31 0:45 ` Linus Torvalds
2007-07-31 0:47 ` Junio C Hamano
2007-07-30 22:20 ` Craig Boston
2007-07-30 23:30 ` Linus Torvalds
2007-07-31 1:17 ` Craig Boston
2007-07-31 1:44 ` Linus Torvalds
2007-07-31 4:23 ` Theodore Tso
2007-07-31 13:53 ` Craig Boston
2007-07-31 15:50 ` Linus Torvalds
2007-07-31 16:15 ` Theodore Tso
2007-07-31 6:23 ` David Kastrup
2007-07-31 7:54 ` Florian Weimer
2007-07-31 8:48 ` David Kastrup
2007-07-30 21:22 ` Jakub Narebski
2007-07-30 21:54 ` David Kastrup
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=20070730180710.GA64467@nowhere \
--to=craig@olyun.gank.org \
--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).