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?

  • Gitlab non funziona con i tasti SSH
  • Dump di database di Microsoft SQL Server in uno script SQL
  • Cambiare vCenter Server 4.1 su una macchina diversa senza la migrazione dei dati?
  • Migrazione dello stato utente SCCM - i dati di questo utente sono andati?
  • Per la migrazione di IPv6, dovremmo sostituire gli switch esistenti L2 che eseguono VLAN?
  • Come migrare meglio un server a un nuovo hardware
  • 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.