How do I migrate a git and a Subversion repository (and possibly convert to git) to a new server?

by Jon Weinraub   Last Updated July 12, 2019 15:01 PM - source

I am building a new internal server for my company. It started with a very cobbled together svn and then we added git as that was requested. Going forward, I prefer to use only Git.

Our Git Repo:

/opt/git is 8 GB in size and has 42 folders inside of the git parent

Structure of a random project where [d] indicates directory:
branches [d], config, description, HEAD, hooks [d], info [d], objects [d], refs [d]

Branches is empty
Config has text
Description has text
HEAD has text
Hooks has the filly executable sh scripts: applypatch-msg.sample, commit-msg.sample, post-update.sample, pre-applypatch.sample, pre-commit.sample, prepare-commit-msg.sample, pre-rebase.sample, update.sample
Info has a single file called exclude which is a text file
Objects has 200 hexidecimal folders
Refs has two directories called heads and tags

Can I just tar up /opt/git and untar it at the destination or are there further steps needed?

Our Subversion Repo:

/home/repos/svn is 11 GB in size and has 63 folders inside of the svn parent

Structure of a random project where [d] indicates directory:
conf [d], db [d], format, hooks [d], locks [d], README.txt

Inside of conf has  :  authz, passwd, and svnserve.conf
Inside of db has    :  current, format, fsfs.conf, fs-type, min-unpacked-rev, rep-cache.db, revprops, revs, transactions, txn-current, txn-current-lock, txn-protorevs, uuid, and write-lock
Inside of hooks has :  post-commit.tmpl, post-lock.tmpl, post-revprop-change.tmpl, post-unlock.tmpl, pre-commit.tmpl, pre-lock.tmpl, pre-revprop-change.tmpl, pre-unlock.tmpl, start-commit.tmpl
Inside of locks has :  db.lock and db-logs.lock

The format file has a single integer in it

So because how the svn was cobbled together, when I migrate to a new RHEL server, I like to convert it to git and also properly, maybe even stripping, and redoing the permissions, because right now every project has a separate authz, passwd, svnserve.conf; though the majority has the same three engineers.

Obviously it is a mess. Can I just tar up /home/repos/svn ensuring permissions are kept (?) and then untar on the destination since it isn't production yet and work on either fixing how our svn works, or converting it to a git repo, which I think is more ideal so there is only one repository for the team.

I am unfamiliar with Git and Svn so if I stated obviously structures, I apologise.



Related Questions


blkid + print only the disks that are with filesystem

Updated January 01, 2018 12:01 PM

NRPE Service Fails to Restart on Redhat

Updated October 15, 2018 12:01 PM