Comment fonctionnent les prises en pension

Comment fusionner plusieurs Référentiels Git Dans un repo

Récemment, je décidé d'ouvrir la source la plupart des projets que j'ai travaillé à l'automne 1. Pour les classes que j'ai gardé un git privé sur 2, j'avais environ 4 prises en pension, chacun avec leur propre branche principale, et un autre 1 repo groupe.

Je pourrais facilement avoir poussé tout à GitHub mais j'aurais prises en pension individuels séparés, et je me sentais il encombrer mes dépôts, car il est peu probable que je vais travailler à nouveau sur ces dépôts, et les gens qui vont effectivement regarder ce sont les plus susceptibles d'autres étudiants qui prennent la classe à l'avenir.

Vous pouvez également copier coller tous les derniers fichiers suffisaient, mais je perdrais commettre d'info, l'histoire, ce qui ne semble pas juste pour moi.

La fusion de plusieurs mises en pension de projet en un seul est aussi contre-intuitif au principe que pour chaque projet distinct, ont une pension séparée, mais étant donné tout cela est considéré comme le milieu universitaire, je voulais groupe tous ensemble.

Il m'a fallu plus de temps que je l'avouer, mais j'ai décidé de partager ici au cas où quelqu'un d'autre cherche à consolider leurs dépôts.

Pré-requis pour moi sont actuellement:

  • 4 repos, tous séparés et isolés.
  • Chacun avec une branche principale

  • Fusionner en un seul grand dépôt
  • Gardez une trace de tous les commits
  • Gardez intacte l'histoire
  • branches distinctes pour chaque repo fusionné

Une condition sine qua non plus, avoir des sauvegardes à portée de main avant de commencer la fusion, il est trop facile de truquer les choses, j'ai donc toujours avoir une copie de sauvegarde de vos dépôts jamais fait de mal. Ceci est un avertissement!

Nous devons d'abord préparer l'ancienne pension pour la fusion.

Sur le repo que vous voulez fusionner, je vais utiliser old_A comme nom de repo, créez un répertoire avec un nom unique. Il est important que ce nom de répertoire n'est pas utilisé dans les autres prises en pension que vous souhaitez fusionner avec, en évitant le potentiel des conflits de fusion. créer généralement un répertoire avec le nom du projet et en déplaçant le tout une des œuvres de niveau.

Sur le actuel répertoire racine de votre dépôt git (nommé comme un dossier old_A):

Ici project_A est le nom unique du dossier. C'est bizarre parce que nous ne pouvons pas déplacer tous les fichiers dans le répertoire en cours un niveau plus bas sans monter d'un niveau.

Vous pouvez aussi git manuellement mv subdir project_A / subdir pour chaque sous-répertoire et le fichier, je l'ai fait parce qu'il était plus simple et ne pas avoir trop de dossiers dans chaque repo. Ou essayer quelque chose comme ça.

Dans un autre répertoire qui ne contient pas de git, initialiser un dépôt vide dans un répertoire vide avec git init. Ce sera notre référentiel « maître ».

Ajouter un readme et effectuer un commit initial.

Créer une branche vide nommé propre. Ce sera la branche de base, nous allons fusionner d'autres dépôts dans. Cela est nécessaire que la branche master ne sera plus vide plus tard.

Si nous listons les branches dans notre repo avec la branche git --all. Ceci est la sortie

Checkout la branche propre avec git checkout propre.

(Note: si vous êtes maintenant cette étape de fusion relisant dans d'autres prises en pension, vous devez être sur la branche propre avant de continuer!)

Pour ce tutoriel, je vais utiliser old_A comme l'ancien repo. Nous allons ajouter une branche à distance old_A (nom remote_A, une prise en pension à distance peut être un répertoire local avec une .git à l'intérieur, ou une adresse Web.

* Alternativement, git ajouter à distance remote_A

Fetch toutes les branches!

Voici l'exemple de sortie de me tirer dans mon héritage Github Pages repo.

Il est temps de créer & récupérer une branche que nous voulons tirer notre ancien référentiel dans. Je vais utiliser project_A comme la branche « nouvelle » que nous voulons maintenir l'ancien repo. (Notez également que j'utilise remote_A / maître comme la branche que je veux tiré. Vous aurez besoin de plusieurs branches pour plusieurs branches (lol .. duh?)).

Si nous faisons ls maintenant, vous verrez vos fichiers de l'ancien projet A remote_A. Si vous ne l'avez pas vous n'êtes pas sur la branche droite, ou vous foiré. En outre, si vous exécutiez branche git --all vous obtiendrez une branche principale, branche propre, branche project_A et toutes les branches à distance montrant.

Cela semble bon, revenir à la branche principale.

Maintenant, nous fusionnons dans la branche project_A. Nous avons quelques options ici. Si vous effectuez une fusion git régulière, tous les commits montreront sur maître, ce qui est génial si vous voulez GitHub pour suivre et montrer plus commits, mais cela sort de la main lors de la fusion d'autres projets, comme les commits sont commandés par le temps, et vous obtenez la chronologie absurde, commits sans rapport avec intersection. Il est à vous, mais faisons-git merge à la place --squash donc nous avons un projet par commit écrasé sur le maître.

Faire un commettras montrant ce que vous avez fait. (Si vous ne l'avez pas le squash ne se produira pas)

Il est temps de supprimer l'URL de la branche à distance puisque nous ne avons pas besoin de garder une référence.

Vous avez maintenant supprimé la référence URL à distance proj_A.

Je voulais juste souligner à ce stade, vous pouvez maintenant supprimer votre ancien repo, nous ne avons plus besoin. Dans cet exemple, je peux supprimer la prise en pension à https://github.com/username/proj_A.git. Bien sûr, si vous êtes de jouer avec votre seule et unique prise en pension, il vaut mieux que vous attendez jusqu'à ce que nous ayons terminé avec la fusion!

Ajouter une nouvelle télécommande pour la prise en pension de maître, puis pousser la branche jusqu'à votre télécommande! (Par exemple que url GitHub pour votre nouveau repo que vous avez créé, assurez-vous que vous n'initialisez pas la prise en pension à distance avec un README)

D'abord Répétez l'étape 0. Ensuite, répétez l'étape 5 à l'étape 13 pour d'autres référentiels, poussant le dépôt à l'origine après avec l'origine de la git push name_of_branch

Vous devriez maintenant avoir une belle pension « maître ». Avec commits sur le maître écrasements commits, et chaque branche tenant sa propre histoire commettre. Réjouir!

Comment fonctionnent les prises en pension

Enfin, le crédit va également au poste de Julio sur la fusion prises en pension ici, il a aidé sans aucun doute.

Aussi, merci à Nate pour tester beta ce tutoriel et de corriger les erreurs!

par récemment je voulais dire Janvier et repo peuvent être trouvés ici. &# 8617;

l'université je vais à l'entreprise fournit GitHub! &# 8617;


Howto Configuration des dépôts yum pour mettre à jour ou package d'installation à partir de l'image ISO CDROM

Comment fonctionnent les prises en pension

miam (Yellow dog Updater modifié) est un gestionnaire de paquets pour les systèmes Linux compatibles RPM tels que CentOS, Fedora Core et dernière Redhat Enterprise Linux.

Alors, comment utilisez-vous yum mettre à jour / installer des paquets à partir d'un ISO de CentOS / FC / RHEL CD?

Création de dépôts yum est géré par un outil distinct appelé createrepo, qui génère les métadonnées XML nécessaire. Si vous avez une connexion Internet lente ou d'une collection de toutes les images téléchargées ISO, utilisez ce hack pour installer rpms à partir d'images ISO.

Tapez la commande suivante (remplacez le nom du fichier iso avec le fichier iso réel):

# Yum install createrepo

# Mount -o boucle /path/to/centos1.iso / mnt / iso / 1

Utilisez createrepo pour générer les métadonnées XML nécessaires. Tapez les commandes suivantes:

repo propre, entrez:

Vous devez créer un fichier de configuration repo dans le répertoire /etc/yum.repos.d/.

Append le texte suivant:

[Mon référentiel ISO]

Enregistrer et fermer les changements.

Maintenant, utilisez la commande yum pour installer des paquets à partir d'images ISO:

# Yum install paquet

L'auteur est le créateur de nixCraft et un sysadmin expérimenté et un entraîneur pour le système d'exploitation Linux / Unix scripts shell. Il a travaillé avec des clients internationaux et dans diverses industries, y compris l'informatique, l'éducation, la défense et la recherche spatiale et le secteur sans but lucratif. Suivez-le sur Twitter, Facebook, Google+.

J'ai une petite faveur à vous demander. Plus les gens lisent le nixCraft. Beaucoup d'entre vous bloquer la publicité qui est votre droit, et les recettes publicitaires ne sont pas suffisants pour couvrir mes frais d'exploitation. Ainsi, vous pouvez voir pourquoi je dois demander votre aide. Le nixCraft, prend beaucoup de mon temps et beaucoup de travail à produire. Si tout le monde qui lit nixCraft, qui aime, contribue à soutenir les dons:

Comment fonctionnent les prises en pension52 commentaires

merci pour le thismanual, u peut me dire comment installer la mise à jour et coresponsding d'une url dépendances comme rpm.pbone.net

il ne fonctionne pas pour moi.

oui à droite, lorsque yum est configuré au niveau local, il fonctionne. comment faire sur la machine cliente.

client est client nfs. Comment vais-je configurer dépôt yum maintenant.

becos il donne l'erreur si je configuré de la même manière. problème est qu'il ne peut pas lire / mnt / iso / 1 répertoire.

têtes du noyau-2.6.18-194 paquets de téléchargement d'erreur: échec: 1 / serveur / kernel-headers&# 8230; rpm de my_iso_repository: 256 errno pas plus de miroirs pour essayer.

yum peut ne pas être en mesure d'installer &# 8216; createrepo&# 8217; car il peut avoir besoin d'un dépôt pour le trouver &# 8211; vous savez, celui que vous essayez de créer ;-) ..

Cela peut être résolu en l'installant &# 8216; la main&# 8217 ;, par exemple

# Rpm -i /mnt/iso/4/Server/createrepo-0.4.4-2.fc6.noarch.rpm

Merci pour l'article, continuez!

Merci de remarquer cette question

Merci pour le conseil. Semble excellent travail pour la plupart.

Je l'ai utilisé pour créer un repo local pour FC7 avec le isos et un instantané tout FC7 original de

Jan &# 8217; 08. La plupart des paquets sont très bien, mais certains d'entre eux (en particulier openoffice.org-pyuno) sont préfixant &# 8220; 1:&# 8221; au numéro de version il&# 8217; s à défaut de la vérification des dépendances.

&# 8211;> Forfait openoffice.org-pyuno.i386 1: 2.2.0-14.8 ensemble à être mis à jour

&# 8211;> Dépendance de traitement: openoffice.org-core = 1: 2.2.0-14.8 du paquet: openoffice.org-pyuno

&# 8211;> Résolution des dépendances Fini

Erreur: Dépendance manquante: openoffice.org-core = 1: 2.2.0-14.8 est nécessaire par paquet openoffice.org-pyuno

Mais je&# 8217; avez obtenu openoffice.org-2.2.0-14.8 installé!

En regardant à travers la liste yum disponibles montre un sous-ensemble de paquets avec le &# 8220; 1:&# 8221; préfixé au numéro de version.


Comment je travaille avec IPS repo de la porte de slim_source

Retour dans les mauvais jours avant ON et slim_source avaient déménagé à la construction des paquets IPS que, on pourrait pkgadd -d <location9gt; SUNW<package9gt; et facilement abandonner leur code de test sur une machine. Maintenant, avec le passage à IPS paquets devient le code de test à une machine peut être beaucoup plus facile, mais mettre en place est un peu plus compliqué. Il est un outil pour le faire automatiquement pour ON appelé onu (voir en action ici). Cependant, pour slim_source il est assez facile à faire manuellement &# 8212; une fois que vous savez ce que vous devez faire.

  1. Faire un environnement d'initialisation de sauvegarde: créer beadm <new_BE_name9gt;
  2. Réglez votre système sans &# 8212; désinstaller l'incorporation entière: pkg entière de désinstallation
  3. Ajouter votre nouveau référentiel: pkg-éditeur mis -P -g fichier: /// Chemin / vers / slim_source / pacakge /<architecture9gt; /repo.redist install-nuit
  4. Installer la nouvelle installation incorporation de consolidation: pkg installer pkg: // install-nuit / consolidation / install / install-intégration
  5. Installez-vous nouveau package! Installer pkg pkg: // install-nuit /installer / installadm

Ok, donc ce qui précède est une recette assez simple et le plus souvent les choses vont simplement travailler. Cependant, il y a certains cas, étaient des choses devient un peu tordu.

Like this post? Please share to your friends: