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

git-cvsimport newbie question

From
SLScott Lamb <slamb@slamb.org>
Date
Jul 11, 2007, 07:20 UTC
Message-ID
<469484AA.7040701@slamb.org>

I'm trying to automatically maintain a git mirror of a (very) remote CVS repository which is suitable for a few people to clone. I'm creating and updating it now by running this periodically:

    $ mkdir ~/git/racoon2.git; cd ~/git/racoon2.git && git-cvsimport -d
:pserver:anoncvs@anoncvs.racoon2.wide.ad.jp:/anoncvs/racoon2 -r wide -i
racoon2
and cloning/pulling it in the simplest possible way:
    $ git clone racoon2.git myracoon2
    $ cd myracoon2
    $ stg init
    ...work work work...
    $ stg pull
But my clones don't see all the upstream branches:
    $ git remote show origin
    * remote origin
      URL: /home/slamb/git/racoon2.git/.git
      Remote branch(es) merged with 'git pull' while on branch master
        master
      Tracked remote branches
        master

In fact, the only branch I see is the one which isn't even updated, which confused into thinking upstream wasn't changing. (I can't say the manpage didn't warn me, though - "By default initial import will create and populate a "master" branch from the CVS repository's main branch which you're free to work with; after that, you need to git merge incremental imports, or any CVS branches, yourself.")

Okay, it seems like what I actually want is this:
    $ git-cvsimport -d $CVSROOT -o master -i racoon2

which essentially creates a repository that is a mirror of upstream rather than one which pretends to be tracking a nonexistent upstream git repository. Now on the cloned branches "git branch -r" does what I want, as does a simple "git pull".

But from the manpage, it appears I'm reverting to a much older way of doing things. Maybe I should be giving the newer way a shot? Was this "-r" way meant to be used with cloning the mirrored repository? If so, what's the workflow there? maybe I should reset racoon2.git's "master" branch to the beginning of time (to avoid confusion), update head to point to remotes/wide/master (so simple "git clone" and "git pull" commands get CVS HEAD), and then update remote.origin.fetch on each cloned repository to pull in other branches as needed? But even after doing that, "git remote show origin" on a cloned repository still won't give me the list of branches I want. So this seems doesn't seem as good as the old way.

Is there any way to make a repository cloned from a new-style cvsimported one show the list of branches? It looks like I can't have a remote in one repository refer to a remote in another repository - it wants a direct reference. Most things seem to ignore origin's remotes, at least unless I explicitly name one like "git pull origin refs/remotes/wide/master".

Best regards, Scott

-- 
Scott Lamb <http://www.slamb.org/>
Next: Scott Lamb
Message 1 of 2 in “git-cvsimport newbie question”
  1. Scott LambJul 11, 2007
  2. Scott LambJul 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.