Hi,
I have my brand new Stash server installed, and now I am trying to migrate my Git repositories (which are currently hosted on some remote site). I already created a local copy using "git clone --mirror"(which includes all branches).
My question is:
What is the preferred way to import such a bare repository - including all branches and tags - to Stash?
My ideas so far:
- use a local script that pushes all branches and tags - one by one - to the Stash server
- got to the Stash "data/repositories" directory and execute a "git clone --mirror" there
Thanks!
Martin
One has to be very careful using
git clone --mirror
This command sets force update for all the references of remote origin:
[remote "origin"] url = ... fetch = +refs/*:refs/* mirror = true
As result one may accidentaly rewrite the whole history of mirrored repository just by running:
git fetch origin
That's why one should remove the remote right after the clone is completed:
git remote rm origin
So the whole sequence should be as follows:
git clone --mirror $ORIGINAL_URL git remote rm origin git remote add stash $STASH_URL git push --all stash git push --tags stash
Another important note: if you're importing Subversion repository into Stash with git-svn, I'd highly recommend you to use SVN Importer Plugin instead, here are the reasons:
Hope that helps.
On clone and remote rm orgin, do we still keep link to the origin one or the old and new report are strictly seperate ?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm astonished how convoluted it is to get set up to use Stash with an existing git repo.
Why on earth doesn't Stash handle this for us? I should just have to tell stash where my existing repo is and it should take care of the rest!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Martin,
You should be able to push all Branches and Tags to Stash by changing the origin (or adding Stash as another remote) and run "git push --all" and "git push --tags". Note that "all" includes all Branches, but not the Tags.
See the documentation for details: http://git-scm.com/docs/git-push
Cheers,
Jens
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For future reference, AppFusions just released a "Source Code Importer for Atlassian Stash" plugin to help reduce the headaches in this.
Initial release supports code from SVN SCM. More SCM support coming!
Questions - don't hesitate to let us know - happy to help!
Ellen
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That plugin doesn't seem to be available any more - the link points to a generic AppFusions page.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
On another note... I would suggest to never edit the data directory manually.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Maybe you guys should update the docs then?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Ben, I've done that now. Sorry for the oversight!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
When I follow those instructions, I get to the final step (the push --all) and get:
$ git push --all origin
error: --all and --mirror are incompatible
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If you clone a repository with --mirror, you cannot use --all. The mirror option will push all refs to origin.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Importing external projects into Stash is now documented:
https://confluence.atlassian.com/display/STASH/Importing+code+from+an+existing+project
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.