534 votes

GitHub : Comment rendre privé un fork de dépôt public ?

Comment puis-je bifurquer d'un dépôt public, mais rendre ma bifurcation privée ? J'ai l'abonnement pour supporter les dépôts privés.

29voto

Yidir Points 124

GitHub dispose désormais d'une option d'importation qui vous permet de choisir si vous souhaitez que votre nouveau dépôt importé soit public ou privé.

Github Repository import

0 votes

L'importation est toujours en cours sur un grand dépôt (5 jours), les vérifier est beaucoup plus rapide, mais peut-être que c'est plus d'étapes pour le garder à jour. La lenteur est compréhensible je suppose qu'il importe tout et pas seulement la branche master, mais j'aimerais que ce soit plus rapide...

1 votes

J'allais ajouter la même réponse mais merci de l'avoir fait en premier. Je suis content que Github propose des dépôts privés gratuits depuis janvier de l'année dernière :D

1 votes

NON SUPPORTÉ : Selon le support GitHub, l'importation est uniquement destinée à convertir des projets externes en github et son utilisation sur des dépôts github peut avoir des conséquences inattendues. Il est évident que cela fonctionne pour certains projets, d'après les réponses ici, mais j'ai rencontré des problèmes en utilisant import sur un grand projet (c'est ce qui m'a conduit au support GitHub). Je pense que cela ne vaut pas la peine de prendre le risque lorsque la duplication d'un dépôt est simple.

7voto

cb4 Points 3782

Mise à jour de 2021

Je suis novice en matière de git, je voulais donc faire le plus possible dans l'interface graphique d'eclipse (v2020-12 ; EGit v5.11). Détails ci-dessous.

---> La méthode d'importation dans les autres réponses a été conçue uniquement pour les projets Subversion, Mercurial ou TFS. Il n'est pas supporté par GitHub pour les projets git. comme je l'ai appris de première main. Ça pourrait marcher, mais pourquoi le risquer ?


Dépôts et connexion GitHub

eclipse/org.aspectj est le Dépôt public original et le upstream télécommande pour aller chercher
cb4/org.aspectj est le fourchette et le origin télécommande pour pousser
cb4/remPrivAJ est le dépôt privé distant et le private télécommande pour pousser
I:\local est le repo local

Pour l'authentification github, j'ai utilisé ssh avec une clé ed25519 ( les étapes de cette réponse SO ) donc mes URI de connexion ressemblent à ceci : ssh://git@github.com/<user>/<repo> .

Notation : -> est un clic de souris ou une sélection ; right-> est un clic droit.


ÉTAPES

  1. Sur github, fourchette le dépôt public d'origine sur votre compte github
  2. Sur github, créer le repo privé distant vide
  3. Dans la perspective Git d'eclipse, clonez le fork vers un nouveau repo local et configurez-le
  • 3.1 -> Clone a Git Repository and add clone to this view -> Clone URI -> Next
    • 3.1.1 Entrez l'URI, la connexion et les informations d'authentification comme il convient. -> Next
    • 3.1.2. Sélectionnez les branches désirées (j'ai sélectionné seulement master) -> Next
    • 3.1.3. Entrez le répertoire de destination pour le repo local
    • 3.1.4. Importez des projets maintenant ou faites-le plus tard, puis -> Finish pour alimenter le dépôt local
  • 3.2. Configurez le repo public d'origine comme un nouveau distant nommé upstream pour faire descendre les mises à jour
    • 3.2.1. right-> Remotes -> Create Remote -> et entrez le nom upstream
    • 3.2.2. -> Configure fetch -> Create -> Change -> entrer l'URI du repo original -> Finish
    • 3.2.3. -> Save and Fetch -> toutes les branches sont téléchargées -> Close
    • 3.2.4. NOTE : Je ne voulais que la branche master, donc j'ai fait ceci au lieu de Étape 3.2.3
    • 3.2.5. -> Advanced sous Specifications to fetch supprimer la seule entrée qui s'y trouve
    • 3.2.6. Sous Add create/update specification -> Source ref: dropdown et sélectionnez master [branch] -> +Add Spec -> Force Update
    • 3.2.7. -> Save specifications in upstream configuration -> Finish -> Save and Fetch -> seule la branche master est téléchargée -> Close

  1. Dupliquer le repo public distant vers votre dépôt privé distant et configurez-le. C'est la seule étape qui ne peut pas être faite dans eclipse, donc j'ai installé Git pour Windows et utilisé GitCMD.

Comme ça :

git clone --bare git://github.com/eclipse/org.aspectj.git tmpRepo
<if prompted, enter ssh passphrase>
cd tmpRepo    
git push --mirror ssh://git@github.com:cb4/private.git
<if prompted, enter ssh passphrase>
cd ..    
rmdir tmpRepo /s /q

  1. Configurer le repo privé distant comme un nouveau distant nommé private pour avoir poussé
  • 5.1. right-> Remotes -> Create Remote -> et entrez le nom private
  • 5.2. -> Configure push -> Create -> Change -> entrer l'URI du dépôt privé distant -> Finish
  • 5.3. -> Advanced -> Add All Branches Spec -> Force Update -> Save specifications in origin configuration -> Finish
  • 5.4. -> Save and Push la branche master est poussée -> Close

À ce stade, vous avez bifurqué d'un dépôt public vers votre dépôt privé. Pour voir comment pousser les changements privés vers votre fork et ensuite ouvrir une demande de pull contre le repo public original, voir ma réponse ici . La configuration résultante ressemble à ceci :
config

6voto

Eddie Jaoude Points 712

Allez sur la page de votre projet forké, puis sur 'admin'. Dans les paramètres, changez la visibilité de 'Public' à 'Privé'.

Edit : Ce paramètre n'est plus disponible (voir commentaires)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X