qrtt1
qrtt1

Reputation: 7957

How to make git cvsimport checkout changes after some date?

I am using git cvsimport to work with a cvs server, and it works fine. However, some very old projects have many commits and large files. It causes cvsimport to spend a long time checking out all commits and converting them to git format.

I cvsimport like this:

git cvsimport -v -a -d :pserver:qrtt1@localhost:/cvs cvsroot/my_module

Is it possible to select commits after some date?

Upvotes: 5

Views: 1006

Answers (2)

Thomas
Thomas

Reputation: 31

I guess you must seperate your cvsps arguments by comma:

git cvsimport -v -d <cvsroot> -p -d,'2012/01/01 00:00:00' <module>

Upvotes: 3

Burhan Ali
Burhan Ali

Reputation: 2229

In theory you should be able to use the -p option of git cvsimport in conjunction with the -d option of cvsps. Here are the two relevant extracts from the man pages:

git cvsimport:

-p < options-for-cvsps >

Additional options for cvsps. The options -u and -A are implicit and should not be used here.

If you need to pass multiple options, separate them with a comma.

cvsps:

-d < date1 > -d < date2 > if just one date specified, show revisions newer than date1. If two dates specified, show revisions between two dates.

Unfortunately when I used it, cvsps complained about the date:

$ git cvsimport -v -d <cvsroot> -p "-d '2012/01/01 00:00:00'" <module>
Running cvsps...

bad usage: invalid argument -d '2012/01/01 00:00:00'

Usage: [...]

git cvsimport: fatal: cvsps reported error

Running cvsps by itself accepts the date though, so doing this as a two step process should work.

cvsps -d '2012/01/01 00:00:00' > patchset
git cvsimport -d <cvsroot> -P patchset <module>

You can examine the output of cvsps to confirm that it only has changes after the date you specified, before running the lengthy cvsimport command.

Upvotes: 2

Related Questions