come migrare tutti i repos da gitlab a bitbucket

La mia azienda sta valutando il bitbucket come il nostro VCS centrale. Attualmente utilizziamo gitlab 7.13.4. Abbiamo cercato un modo automatico per migrare tutti i nostri repos di gitlab in bitbucket ma le mie ricerche sono venute vuote. Ci sono molti esempi per fare questo alla volta, ma niente da fare tutti in un gruppo. Con centinaia di repos vorremmo utilizzare un process che ha una buona probabilità di affidabilità.

Come un bonus c'è un modo per migrare automaticamente i gruppi e le autorizzazioni?

  • Aggiornamento da Windows 2003 a Windows 2008
  • Come eseguire la migrazione di un sistema fisico a un server virtuale KVM con accesso di networking solo?
  • Ripristina il vecchio repository SVN o converti in git
  • Spostamento da on-premise a O365
  • Domanda: MySQL db Migrazione dal server (A) al server (B), quali tabelle?
  • Migrare più repository svn in un repository git
  • One Solution collect form web for “come migrare tutti i repos da gitlab a bitbucket”

    È ansible utilizzare la Bit Bucket REST api, ecco alcuni Perl che uso per importre un repository in bitbucket:

    #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use File::Basename; my $numArgs = $#ARGV + 1; if($numArgs < 2) { die "Usage: $0 [Bit Bucket Project eg FW, BDPE] [repo name] [-d dry run (optional)]"; } my $bitbucketProject = lc $ARGV[0]; my $repoName = $ARGV[1]; my $dryRun = $ARGV[2]; my %moduleHash; my $bitBucketServer = "localhost"; my $user = "admin"; my $password = "bitbucket"; print "Bit Bucket Project: $bitbucketProject\n"; print "Repository name: $repoName\n"; sub importRepo { my $command = sprintf("curl -u %s:%s -X POST -H \"Content-Type: application/json\" -d '{ \"name\": \"%s\", \"scmId\": \"git\", \"forkable\": true \}' http://%s:7990/rest/api/1.0/projects/%s/repos", $user, $password, $repoName, $bitBucketServer, $bitbucketProject); if ($dryRun) { print "$command\n"; } else { print "Doing import\n"; system $command; } my $bitbucketUrl = sprintf("ssh://git\@%s:7999/%s/%s.git", $bitBucketServer, lc $bitbucketProject, $repoName); my $gitCommand = sprintf("cd %s; pwd; git repack -a -d -f; git push %s --mirror", $repoName, $bitbucketUrl); if ($dryRun) { print "$gitCommand\n"; } else { print "Running git\n"; system $gitCommand; } } importRepo(); 

    Quindi puoi avvolgerti con uno script di shell:

     #!/bin/bash BITBUCKETPROJECT=$1 if [ $# -ne 2 ]; then echo "Usage: $0 [Bit Bucket Project] [Path to repos]" exit 1; fi echo "Bit bucket project: $BITBUCKETPROJECT" for f in *; do if [[ -d $f ]]; then echo $f ./importRepository.pl $BITBUCKETPROJECT $f fi done 

    Suppone che tutti i repos siano stati clonati nella directory corrente.

    https://developer.atlassian.com/static/rest/bitbucket-server/latest/bitbucket-rest.html

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.