Создавайте репозитории в Bitbucket - PullRequest
1 голос
/ 07 мая 2019

У меня есть следующая структура проектов и репозиториев:

Project 1:
 --Repository 1
 --Repository 2
 --
 --
 --
 --Repository 5

 Project 2:
 --Repository 1
 --Repository 2
 --
 --
 --
 --Repository 10

Project 3,4...

Мои проекты уже созданы.Но мои репозитории еще не созданы. Есть ли лучший способ сделать это?Я не хочу создавать репозитории вручную, так как это занимает много времени.Является ли API или скрипт лучшим вариантом для этого?Любая помощь ???

1 Ответ

0 голосов
/ 07 мая 2019

Вот какой-то Perl, который я использую для импорта репозитория в 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 e.g. 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();

Затем вы можете обойти это с помощью сценария оболочки:

#!/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

Предполагается, что все ваши репозитории были клонированы в текущий каталог.

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

...