web-dev-qa-db-fra.com

Comment puis-je tirer une branche de développement?

J'essaie de passer à la version dev de Views. Référentiel instructions a fonctionné et j'ai pu git clone Vues.

Cependant, en répertoriant les branches disponibles avec git branch -a ne montre que * 7.x-3.x.

Et essayer d'ajouter une branche "dev" avec pull renvoie une erreur:

$ git pull Origin 7.x-3.x
From http://git.drupal.org/project/views
 * branch            7.x-3.x    -> FETCH_HEAD
Already up-to-date.
$ git pull Origin 7.x-3.x-dev
fatal: Couldn't find remote ref 7.x-3.x-dev

Qu'est-ce que je fais mal?

5
xtian

Si je fais

git clone --recursive --branch 7.x-3.x http://git.drupal.org/project/views.git

et alors

git branch -r

Je reçois

Origin/4.6.x-1.x  
Origin/4.7.x-1.x  
Origin/5.x-1.x  
Origin/6.x-2.11-security  
Origin/6.x-2.x  
Origin/6.x-3.x  
Origin/7.x-3.x  
Origin/8.x-3.x  
Origin/HEAD -> Origin/7.x-3.x  
Origin/d7v3ui  
Origin/master  

Je crois que vous avez besoin du drapeau récursif pour obtenir toutes les télécommandes. Je ne sais pas si vous l'avez fait, mais une récupération rapide de git mettra à jour votre liste de télécommandes.

git pull Origin 7.x-3.x-dev
fatal: Couldn't find remote ref 7.x-3.x-dev
Unexpected end of command stream 

Je pense que cela est simplement dû aux conventions de dénomination, le dev actuel est HEAD afaik.

git pull Origin 7.x-3.x
From http://git.drupal.org/project/views
 * branch            7.x-3.x    -> FETCH_HEAD
Already up-to-date.

Je crois que n'importe quelle branche (pas tag) peut être considérée comme 'dev' pour cette version drupal.

J'espère que cela t'aides.

5
Christian

Je ne suis pas un expert de Git, mais si je comprends bien, toutes les versions de la branche de développement répertoriées sur la page du projet sont effectuées directement dans la branche 7.x-3.x. Bien sûr, vous êtes libre de créer vos propres branches localement pour vos propres besoins, mais la branche semblable à master, qui inclut toutes les versions poussées vers drupal.org, sera toujours celle 7.x -3.x branche.

Si vous souhaitez passer à l'une des versions balisées, utilisez git tag pour obtenir une liste de toutes les versions. Ensuite, pour vérifier le 7.x-3.1 version (par exemple), utilisez git co 7.x-3.1.

Si vous avez l'intention de modifier le code de cette version, vous pouvez ensuite créer une nouvelle branche (comme l'explique Git) en utilisant git checkout -b mycustombranch.

6
Patrick Kenny

La façon d'extraire le référentiel de la branche 7.x-3.x du module Views (c'est-à-dire le snapshot de développement 7.x-3.x-dev pour le module Views) de Drupal.org pour la première fois est d'exécuter le commande suivante:

git pull git clone --recursive --branch 7.x-3.x http://git.drupal.org/project/views.git

Après cela, si vous devez conserver le référentiel local pour le module Vues mis à jour, vous devez exécuter les commandes suivantes:

cd views
git reset --hard
git pull Origin 7.x-3.x

Pour être clair: A Drupal instantané de développement est créé à partir d'une branche git, tandis qu'une version Drupal est créée à partir d'une balise git. Le nom du git est le nom de l'instantané de développement Drupal sans la partie -dev. Dans votre cas, l'instantané de développement est 7.x-3.x-dev, et la branche git est 7.x- 3.x.
En outre, la balise git utilisée pour créer une Drupal version doit suivre un schéma spécifique. Les balises similaires à 7.x-3.0 (ou 7.x-3.1-beta3) sont pour la version 7.x-3 d'un module et son instantané de développement est nommé 7.x-3.x-dev. Sur Drupal.org, vous ne pouvez pas créer une version Drupal à partir d'un balise git similaire à la version bêta, ou un instantané Drupal d'une branche git similaire à la branche test.

3
kiamlaluno

EDIT: Comme indiqué, la question était "Comment puis-je tirer une branche de développement" qui a été partiellement démontrée dans les autres réponses. Pourtant, une deuxième partie clé de toute réponse doit inclure une traduction de la convention de dénomination Drupal -dev. Tout simplement parce qu'elle n'apparaît pas en utilisant les commandes $git branch ou $git tag tandis que -dev est clairement visible dans le tableau "Versions de développement" sur la page principale d'un module. Ceci est ma tentative de clarifier cela avec une définition raisonnée, mais en aucun cas faisant autorité:

Il y a un sens - dev est équivalent à brouillon dans le familier métaphore de l'écriture. Un article décrit la configuration de "votre propre visionneuse de référentiel Git" sur un référentiel local (pour les développeurs qui préfèrent ne pas héberger dans le cloud),

"Vous pouvez choisir la dernière version stable ou la version principale, mais gardez à l'esprit que la version principale peut avoir des bogues car les développeurs y travaillent activement." PHPMaster

Nous avons maintenant une déclaration définitive décrivant une convention pour développement actif sur la "version principale". Et voici le principal problème sur lequel j'ai travaillé dans cet article: relier une convention (convention de développeur, meilleures pratiques de programmation, ou The Drupal Way) au fonctionnement et à l'utilisation de l'application git.

Maintenant, vous devrez me supporter un instant pendant que je m'éloigne. Dans ma git-ucation novice, je ne savais pas si "master" était également une convention de dénomination des développeurs ou intégrée à l'application git elle-même. Et ici, je me suis tourné vers une recherche de site sur le site des mainteneurs, git-scm.com, pour trouver ce joyau:

"Dans le cas par défaut qui est automatiquement écrit par un git remote add commande, Git récupère toutes les références sous refs/heads/sur le serveur et les écrit dans refs/remotes/Origin/localement. Donc, s'il y a une branche principale sur le serveur, vous pouvez accéder localement au journal de cette branche ... " git-scm

s'il y a une branche maître? Cela ne signifie pas que "chaque" dépôt git a un "maître". Heureusement, ce mystère a été rapidement résolu en créant mon propre référentiel de test et une recherche ultérieure sur Stackoverflow confirme que c'est techniquement vrai, un nouveau référentiel git sans any commits n'a pas de master branche:

"Maintenant, la raison pour laquelle vous n'auriez pas de branche master même après avoir fait un init git est qu'il n'y a pas de commit: lorsque vous créez votre premier commit, vous aurez alors une branche master." stackoverflow: "fatal: nom d'objet non valide: 'master'"

C'est un exemple étrange à trouver sur le site des mainteneurs, en ajoutant un référentiel distant sans aucun commit, mais dans la personnalisation de Land of Oz au degré nth est un hazzard connu.

Maintenant, en retournant les conseils utiles que j'ai reçus à ce point. Kiamlaluno souligne,

"Un Drupal instantané de développement est créé à partir d'une branche git, tandis qu'une version Drupal est créée à partir d'une balise git." Au lieu de la balise git, essayez avec la branche git . "

Et pourtant, je ne dirai toujours pas ce que je vais dire. Maintenant, il est enfin possible de comprendre le -dev branch in Drupal as the "development snapshot" créé à partir de la branche "master" de la branche git hébergée sur Drupal.org. Le -dev l'étiquette de branche n'est pas présente dans la sortie de la commande de branche à moins que vous ne la mettiez vous-même dans votre référentiel cloné local. J'ai également testé cela récemment, car j'ai trouvé utile d'étiqueter mon brach de travail actuel différent de la branche maître distante du même nom.

J'ai choisi d'utiliser les versions de git et d'utiliser git pour créer mon propre -dev branche de quelques modules pour dépanner l'interaction des modules Vues et Draggableviews, car. comme le souligne Kiamlaluno, les fichiers tar et gzip du tableau "Versions de développement" sont des instantanés. Ainsi, par raison, ils sont toujours plus anciens que la branche maître.


Dans un autre événement curieux, voici une définition de l'instantané à partir d'une page de désambiguïsation Wikipedia,

Instantané: "Une vue d'un référentiel de code source tel qu'il était à un moment particulier dans le but de contrôle de révision dans le développement logiciel." Wikipedia

Il est ironique de trouver cette définition de "référentiel de code source" non pas dans un article wiki, ni sur wikitionary, mais caché dans une page de désambiguïsation. Pas ironique car la définition doit être cachée dans un endroit éloigné, cela évoque plutôt un terme d'impression Widow , qui a sa propre page d'article wiki et entrée wictionary , contrairement à la "branche principale" de git, ou à la "branche -dev" de Drupal (à l'époque de cette missive).

2
xtian