On Thu, 17 Dec 2015 04:40:34 -0800 (PST)
mkjkec2...@gmail.com wrote:

> I am looking for a mechanism to completely backup my git repository .
> The final goal is to take a backup on Tape . I know we have many 
> alternatives like creation of a git bundle or git archive , 
> but could you please suggest the best way wherein all references
> ( remote branchs, tags ) are also preserved .

  git init --bare foo.git
  cd foo.git
  git fetch $source_repo_url 'refs/*:refs/*'

The last encantation uses the so-called "refspec" which instructs Git
to fetch everything from the source repo and re-create the same refs
(heads, tags, notes, whatever else there might be) in the local repo.

The resulting repo can then be backed up to tape.

If you don't want to re-clone each time, the step (1) should be done
only once and the two remaining steps should be repeated before each
backup takes place and look like this:

  cd foo.git
  git fetch $source_repo_url '+refs/*:refs/*'

Notice the '+' char in the "refspec": it tells Git to forcibly replace
everything in the local repo which would otherwise produce a conflict.

If this for some reason might matter to you, you might augment the
fetching operation with repacking the repository using

  git gc --aggressive

which will move most of the "loose" objects into the so-called "pack
files".  On slower filesystems (such as NTFS) this might speed up
copying a bit.  But I'm skeptical about whether this would be
really noticeable.

You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to