[PATCH] cvs2git.c: support incremental conversion
authorPanagiotis Issaris <takis@lumumba.luc.ac.be>
Fri, 17 Jun 2005 16:26:57 +0000 (18:26 +0200)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sun, 19 Jun 2005 17:48:41 +0000 (10:48 -0700)
Add -u option to indicate incremental conversion.

I wanted to be able to track CVS repositories in a GIT repository. The
cvs2git program worked fine with the initial import but needed a tiny
modification to enable me to resync the GIT repository with the updated
CVS tree.

[ The original version of this patch failed to track the correct
branch on the first new commit. Fixed and tested by Sven. ]

Signed-off-by: Panagiotis Issaris <takis@lumumba.luc.ac.be>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
cvs2git.c
index d438475d03b7ff897a9e2b976a34a75b86c01a80..ab0590872e113531aba897e587a08a8dbacf84d9 100644 (file)
--- a/cvs2git.c
+++ b/cvs2git.c
@@ -28,11 +28,17 @@ static int verbose = 0;
  * Usage:
  *
  *     TZ=UTC cvsps -A |
- *             cvs2git --cvsroot=[root] --module=[module] > script
+ *             git-cvs2git --cvsroot=[root] --module=[module] > script
  *
  * Creates a shell script that will generate the .git archive of
  * the names CVS repository.
  *
+ *     TZ=UTC cvsps -s 1234- -A |
+ *             git-cvs2git -u --cvsroot=[root] --module=[module] > script
+ *
+ * Creates a shell script that will update the .git archive with
+ * CVS changes from patchset 1234 until the last one.
+ *
  * IMPORTANT NOTE ABOUT "cvsps"! This requires version 2.1 or better,
  * and the "TZ=UTC" and the "-A" flag is required for sane results!
  */
@@ -233,6 +239,10 @@ int main(int argc, char **argv)
                        verbose = 1;
                        continue;
                }
+               if (!strcmp(arg, "-u")) {
+                       initial_commit = 0;
+                       continue;
+               }
        }
 
 
@@ -244,11 +254,13 @@ int main(int argc, char **argv)
                exit(1);
        }
 
-       printf("[ -d .git ] && exit 1\n");
-       printf("git-init-db\n");
-       printf("mkdir -p .git/refs/heads\n");
-       printf("mkdir -p .git/refs/tags\n");
-       printf("ln -sf refs/heads/master .git/HEAD\n");
+       if (initial_commit) {
+               printf("[ -d .git ] && exit 1\n");
+                   printf("git-init-db\n");
+               printf("mkdir -p .git/refs/heads\n");
+               printf("mkdir -p .git/refs/tags\n");
+               printf("ln -sf refs/heads/master .git/HEAD\n");
+       }
 
        while (fgets(line, sizeof(line), stdin) != NULL) {
                int linelen = strlen(line);