Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
This commit is contained in:
commit
e65dfcf2b0
4 changed files with 84 additions and 17 deletions
|
@ -7,6 +7,7 @@
|
|||
- [GitLab Basics](gitlab-basics/README.md) Find step by step how to start working on your commandline and on GitLab.
|
||||
- [Importing to GitLab](workflow/importing/README.md).
|
||||
- [Markdown](markdown/markdown.md) GitLab's advanced formatting system.
|
||||
- [Migrating from SVN](migration/README.md) Convert a SVN repository to Git and GitLab
|
||||
- [Permissions](permissions/permissions.md) Learn what each role in a project (guest/reporter/developer/master/owner) can do.
|
||||
- [Profile Settings](profile/README.md)
|
||||
- [Project Services](project_services/project_services.md) Integrate a project with external services, such as CI and chat.
|
||||
|
|
|
@ -19,3 +19,4 @@
|
|||
- ["Work In Progress" Merge Requests](wip_merge_requests.md)
|
||||
- [Merge When Build Succeeds](merge_when_build_succeeds.md)
|
||||
- [Manage large binaries with Git LFS](lfs/manage_large_binaries_with_git_lfs.md)
|
||||
- [Importing from SVN, GitHub, BitBucket, etc](importing/README.md)
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
# Migrating projects to a GitLab instance
|
||||
|
||||
1. [Bitbucket](import_projects_from_bitbucket.md)
|
||||
2. [GitHub](import_projects_from_github.md)
|
||||
3. [GitLab.com](import_projects_from_gitlab_com.md)
|
||||
4. [FogBugz](import_projects_from_fogbugz.md)
|
||||
4. [SVN](migrating_from_svn.md)
|
||||
1. [GitHub](import_projects_from_github.md)
|
||||
1. [GitLab.com](import_projects_from_gitlab_com.md)
|
||||
1. [FogBugz](import_projects_from_fogbugz.md)
|
||||
1. [SVN](migrating_from_svn.md)
|
||||
|
||||
### Note
|
||||
* If you'd like to migrate from a self-hosted GitLab instance to GitLab.com, you can copy your repos by changing the remote and pushing to the new server; but issues and merge requests can't be imported.
|
||||
In addition to the specific migration documentation above, you can import any
|
||||
Git repository via HTTP from the New Project page. Be aware that if the
|
||||
repository is too large the import can timeout.
|
||||
|
||||
### Migrating from self-hosted GitLab to GitLab.com
|
||||
|
||||
You can copy your repos by changing the remote and pushing to the new server;
|
||||
but issues and merge requests can't be imported.
|
||||
|
||||
* You can import any Git repository via HTTP from the New Project page.
|
||||
If the repository is too large, it can timeout.
|
||||
|
|
|
@ -1,17 +1,78 @@
|
|||
# Migrating from SVN to GitLab
|
||||
|
||||
SVN stands for Subversion and is a version control system (VCS).
|
||||
Git is a distributed version control system.
|
||||
Subversion (SVN) is a central version control system (VCS) while
|
||||
Git is a distributed version control system. There are some major differences
|
||||
between the two, for more information consult your favorite search engine.
|
||||
|
||||
There are some major differences between the two, for more information consult your favorite search engine.
|
||||
If you are currently using an SVN repository, you can migrate the repository
|
||||
to Git and GitLab. We recommend a hard cut over - run the migration command once
|
||||
and then have all developers start using the new GitLab repository immediately.
|
||||
Otherwise, it's hard to keep changing in sync in both directions. The conversion
|
||||
process should be run on a local workstation.
|
||||
|
||||
Git has tools for migrating SVN repositories to git, namely `git svn`. You can read more about this at
|
||||
[git documentation pages](https://git-scm.com/book/en/Git-and-Other-Systems-Git-and-Subversion).
|
||||
Install `svn2git`. On all systems you can install as a Ruby gem if you already
|
||||
have Ruby and Git installed.
|
||||
|
||||
Apart from the [official git documentation](https://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git) there is also
|
||||
user created step by step guide for migrating from SVN to GitLab.
|
||||
```bash
|
||||
sudo gem install svn2git
|
||||
```
|
||||
|
||||
[Benjamin New](https://github.com/leftclickben) wrote [a guide that shows how to do a migration](https://gist.github.com/leftclickben/322b7a3042cbe97ed2af). Mirrors can be found [here](https://gitlab.com/snippets/2168) and [here](https://gist.github.com/maxlazio/f1b593b0d00aa966e9ca).
|
||||
On Debian-based Linux distributions you can install the native packages:
|
||||
|
||||
```bash
|
||||
sudo apt-get install git-core git-svn ruby
|
||||
```
|
||||
|
||||
Optionally, prepare an authors file so `svn2git` can map SVN authors to Git authors.
|
||||
If you choose not to create the authors file then commits will not be attributed
|
||||
to the correct GitLab user. Some users may not consider this a big issue while
|
||||
others will want to ensure they complete this step. If you choose to map authors
|
||||
you will be required to map every author that is present on changes in the SVN
|
||||
repository. If you don't, the conversion will fail and you will have to update
|
||||
the author file accordingly. The following command will search through the
|
||||
repository and output a list of authors.
|
||||
|
||||
```bash
|
||||
svn log --quiet | grep -E "r[0-9]+ \| .+ \|" | cut -d'|' -f2 | sed 's/ //g' | sort | uniq
|
||||
```
|
||||
|
||||
Use the output from the last command to construct the authors file.
|
||||
Create a file called `authors.txt` and add one mapping per line.
|
||||
|
||||
```
|
||||
janedoe = Jane Doe <janedoe@example.com>
|
||||
johndoe = John Doe <johndoe@example.com>
|
||||
```
|
||||
|
||||
If your SVN repository is in the standard format (trunk, branches, tags,
|
||||
not nested) the conversion is simple. For a non-standard repository see
|
||||
[svn2git documentation](https://github.com/nirvdrum/svn2git). The following
|
||||
command will checkout the repository and do the conversion in the current
|
||||
working directory. Be sure to create a new directory for each repository before
|
||||
running the `svn2git` command. The conversion process will take some time.
|
||||
|
||||
```bash
|
||||
svn2git https://svn.example.com/path/to/repo --authors /path/to/authors.txt
|
||||
```
|
||||
|
||||
If your SVN repository requires a username and password add the
|
||||
`--username <username>` and `--password <password` flags to the above command.
|
||||
`svn2git` also supports excluding certain file paths, branches, tags, etc. See
|
||||
[svn2git documentation](https://github.com/nirvdrum/svn2git) or run
|
||||
`svn2git --help` for full documentation on all of the available options.
|
||||
|
||||
Create a new GitLab project, where you will eventually push your converted code.
|
||||
Copy the SSH or HTTP(S) repository URL from the project page. Add the GitLab
|
||||
repository as a Git remote and push all the changes. This will push all commits,
|
||||
branches and tags.
|
||||
|
||||
```bash
|
||||
git remote add origin git@gitlab.com:<group>/<project>.git
|
||||
git push --all origin
|
||||
```
|
||||
|
||||
## Contribute to this guide
|
||||
We welcome all contributions that would expand this guide with instructions on how to migrate from SVN and other version control systems.
|
||||
We welcome all contributions that would expand this guide with instructions on
|
||||
how to migrate from SVN and other version control systems.
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue