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?

  • Migrazione a nuovi HDD
  • Dump di database di Microsoft SQL Server in uno script SQL
  • Openstack: Qual è la differenza tra la nova migra e la nova evacuare?
  • Come migrare i VM da ESXi 3.5 a 4?
  • Come copiare grandi (> 1 milione) di file di piccole size tra due server
  • Migrazione AD dal 2003 a 32bit a 64bit
  • Posso lasciare temporaneamente altri ruoli attivi quando si converte un server 2008 R2 in un host di hyper-v?
  • Enterprise IPv6 Migration - Fine del proxypac? Inizio punto a punto? + 10 utenti
  • 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.