Comment créer un nouveau Gitlab repo à partir de mon local Git repo existant, en utilisant CLI?

j'ai beaucoup de Git-repos locaux sur mon OSX. En utilisant la ligne de commande je veux faire de nouvelles repos gitlab sur https://gitlab.ccompanyname.com, form existing local repos.

Est-il possible de faire cela?

27
demandé sur Jitendra Vyas 2015-10-13 14:50:22

5 réponses

créer de nouveaux projets vides dans GitLab pour chacune de vos prises en pension locales que vous voulez pousser vers GitLab. Après avoir créé le projet, vous serez amené à la page du projet par défaut.

Puis cd dans chacun de vos git repos. Faire un git remote add origin <your new gitlab repo address>

Et git push -u origin master

vous aurez besoin de faire ceci pour chacune de vos prises en pension que vous voulez ajouter.

Votre adresse repo vous est donnée sur la page du projet. Comme http et / ou ssh. Si vous avez déjà une télécommande appelé origin sur votre machine locale, vous pourriez vouloir le renommer d'abord. Ou vous pouvez appeler le gitlab un quelque chose de différent. Aussi si vous voulez pousser toutes vos branches à gitlab vous pouvez faire un git push --all origin Si vous voulez que vos balises git push --tags origin

42
répondu twk3 2015-10-13 17:36:02

je suis d'accord avec vous que la documentation pour Gitlab de l'API wrapper applications tierces n'est pas l'idéal, cependant j'ai réussi à faire fonctionner.

pour cela, j'ai mis en place un serveur gitlab de bac à sable (GitLab Community Edition 8.0.5) dans une boite vagabonde Ubuntu 14.04.

maintenant, le paquet API que j'ai utilisé est celui-ci (python-gitlab par Gauvain Pocentek). J'ai choisi cette un parce qu'il est mis en vedette par assez de gens (118 au moment de l'écriture) et il est écrit en python donc la portabilité ne sera pas un problème (ma machine hôte est Windows cygwin, mais j'utiliserai la syntaxe unix pour cette réponse).

l'Installation est assez facile avec pip:

$ sudo pip install python-gitlab

une Fois installé, vous devrez modifier un fichier de configuration-qui n'existe pas out-of-the-box ou, au moins, je ne pouvais pas le localiser- ( la documentation n'était pas claire à ce sujet). Le nom "officiel" de ce fichier est .python-gitlab.cfg et config.py recherche par défaut.

bref, j'ai créé ma propre version de .python-gitlab.cfg basé sur la syntaxe d'échantillon trouvée à github qui va comme ceci:

[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5

[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM

[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false

[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)

vous devrez vous procurer un jeton privé depuis l'interface web (trouvé dans Paramètres De Profil::Compte) depuis, comme le souligne le README,

seule l'authentification par token privé est prise en charge (pas l'utilisateur/mot de passe).


Après c'est pris en charge, créer un projet peut être réalisé ainsi, pour http:

$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME

et comme ça https:

$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME

les interrupteurs utilisés ci - dessus, peuvent être trouvés en regardant aide:

$ gitlab --help

Maintenant, en supposant que que vous avez pris soin des clés SSH (localement et dans l'interface web), et que vous voulez que les noms gitlab repo soient les mêmes que les répertoires de votre git local, alors, un peu bash script comme le suivant, peut automatiser la création du projet et la poussée locale des repos:

#!/usr/bin/bash

cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do 
    echo
    echo
    echo '>> Creating Project'
    gitlab -c $gitlab_cfg --gitlab $method project create --name $i
    echo '>> Project ' $i 'created'
    echo '>> ------'
    cd $i
    li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
    origin="git@$server:$user/$li.git"
    echo ">> Reassigning origin to : $origin"
    git remote rm origin
    git remote add origin $origin
    git remote -v
    echo '>> Pushing local repo to gitlab'
    git push -u origin master
    echo '>> Done'
    echo
    echo
    cd ..
done
echo
echo 'Operation finished'

ce qu'il fait, c'est créer des projets gitlab nommés d'après les noms de dirnames trouvés à l'extérieur du gitan local répertoire, puis cd's dans chacun d'eux, renouvelle l'origine et effectue ensuite la pousser.

une chose à mentionner ici est que gitlab convertit les urls repo en minuscules, par exemple sampleRepo001 devient samplerepo001 dans l'url du repo; c'est pourquoi j'ai converti dirnames en minuscules dans le script.

Et enfin, voici un exemple d'exécution du script:

enter image description here

pour rappel, si vous souhaitez utiliser cette script, tester minutieusement avant de s'appliquer au serveur de production réel.


mise à Jour - j'ai ajouté plus d'informations sur la façon de gérer HTTPS/SSL.

8
répondu sokin 2015-10-16 21:32:41

solution 2018:set-upstream

en supposant que vous vous occupiez de l'écriture du script qui ferait ce qui suit pour chacun de vos repo locaux, il semble qu'à partir de Gitlab 10.5 vous pouvez simplement utiliser

git push --set-upstream address/your-project.git

cela créera un nouveau projet sur Gitlab sans que vous le créer manuellement sur le serveur


à Partir de la Documentation

Push-to-créer un nouveau projet

quand vous créez un nouveau repo localement, au lieu d'aller à GitLab pour créer manuellement un nouveau projet et ensuite pousser le repo, vous pouvez le pousser directement à GitLab pour créer le nouveau projet, tout cela sans quitter votre terminal. Si vous avez accès à cet espace de noms, nous créerons automatiquement un nouveau projet sous cet espace de noms GitLab avec sa visibilité définie à Private par défaut (vous pouvez ensuite la modifier dans les paramètres du projet).

cela peut être fait en utilisant SSH ou HTTP:

## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master

## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master

une fois la poussée terminée avec succès, un message à distance indiquera la commande pour régler la télécommande et L'URL du nouveau projet:

remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote:   git remote add origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote:   https://gitlab.example.com/namespace/nonexistent-project
remote:
8
répondu ted 2018-03-16 09:55:11

si vous utilisez nodejs, ou avez même une compréhension simple de celui-ci, le node-gitlab module est grande. Sur une instance Gitlab auto-hébergée, j'ai pu créer des projets et importer les repos à partir d'un dépôt distant (un serveur Git local). Le processus devrait être similaire pour un dépôt local. Vous pouvez configurer un serveur Git local sur votre machine et l'utiliser comme import_url pour chaque projet Gitlab.

ou, vous pouvez écrire un script qui utilisera L'API pour créer projet puis poussez chaque dépôt de son projet.

Pseudocode: pour chaque repo dans le répertoire:

  • utiliser L'API pour créer un projet sur gitlab.com
  • git remote ajouter gitlab url-to-gitlab-repo
  • git push gitlab -- mirror
1
répondu user3606666 2016-06-30 23:34:16

git-repo a fait le sale emplois pour vous. Il supporte également GitLab, Github et Bitbucket.

1. Installation

apt-get install python-pip
pip install git-repo

vous pourriez avoir besoin pip3 si la commande ci-dessus ne fonctionne pas.

(optional)
apt-get install python3-pip
pip3 install git-repo

2 Configuration

2.1 configuration nécessaire

git repo config

l'outil en ligne de commande, étape par étape, vous demandera si vous voulez configurer bitbucket, Github, Gitlab compte, appuyez sur 'y/n' et nom d'utilisateur/mot de passe en conséquence. Si vous Je ne sais pas ce que ça veut dire, Appuyez sur 'n' pour sauter. Le fichier de configuration sera généré dans ~/.gitconfig. Vous pouvez le modifier par la suite.

(facultatif) par exemple, vous pouvez définir manuellement jeton dans ~/.gitconfig comme ceci:

[gitrepo "gitlab"]
    token = xxxxxxx
[gitrepo "github"]
    token = xxxxxxx

2.2 meilleur raccourci

ajouter les lignes suivantes dans ~/.gitconfig.

[alias]
hub = repo hub
lab = repo lab

pourquoi?

Parce que maintenant vous pouvez simplement utiliser shortcut

clone git lab / howto

hub git clone /howto

dans l'avenir.

Remarque:: vous avez besoin d' authentication cloner private référentiels

2.3 (optionnel) ajouter des permissions privées right

cd ~/.ssh

voir si vous avez id_rsa.pub fichier. pub signifie dossier public et je vous recommande juste copy le contenu entier et paste pour gitlab.com ssh publique page web.

fait.

Vous ne devriez pas montrer aux autres à propos de fichier correspondant id_rsa, qui est votre clé pour accéder au dépôt gitlab. Autre client / ordinateur ayant id_rsa, avec permission chmod 600 id_rsa, sera capable de contrôler le dépôt.

si vous ne voyez pas id_rsa.pub, que vous pouvez générer à l'aide de:

ssh-keygen -t rsa

Appuyez sur enter pour le laisser par défaut. Maintenant, vous pouvez voir id_rsa.pub et id_rsa à l'intérieur de ~/.répertoire ssh. Si vous utilisez un nom différent autres que id_rsa par défaut, vous devez modifier ~/.fichier SSH / config comme ceci:

# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github

3. git-repo Usage

comme vous commencez un nouveau projet, vous souhaitez créer un nouveau dépôt, à partir de GitLab, pour pousser à:

git lab create <username>/howto

bien sûr, vous pouvez supprimer, lister les dépôts, ou faire d'autres choses.

git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone git@gitlab.com:<username>/howto



Exemple Pratique

en supposant que vous avez développé une myproject répertoire avec Git engagé pendant un certain temps. Maintenant tu veux télécharger sur GitLab.

créer une distance repo dans gitlab. Vous verrez username / myproject dans la page gitlab.

git lab create username/myproject

en Supposant qu'il en est un .fichier git dans le répertoire local de myproject

cd myproject

relier l'annuaire local à la télécommande gitlab.com repo.

git lab add username/myproject

télécharger myproject répertoire gitlab.com

git push -u gitlab master

1
répondu anonymous 2017-04-18 10:48:33