Je suis assez nouveau pour Arcanist et Git. J'aimerais pouvoir créer un diff d'arc (instance différentielle Phabricator utilisant Arcanist) contre une branche git que je suis en train d'extraire/de travailler (et j'ai un commit local non poussé) plutôt que le maître. Pour moi, les arc docs ne sont pas clairs à ce sujet. C'est possible? Comment? Ce serait bien si la réponse fonctionne également pour 2-3 commits non poussés locaux.
"Arc help diff" donne également:
diff [paths] (svn)
diff [commit] (git, hg)
Supports: git, svn, hg
Generate a Differential diff or revision from local changes.
Under git, you can specify a commit (like HEAD^^^ or master)
and Differential will generate a diff against the merge base of that
commit and HEAD.
Peut-être que je dois juste faire "arc diff [commit]" où [commit] est la pointe de la branche cible? Mais j'aimerais en être certain, car je ne veux pas polluer notre instance Phabricator.
En outre, je suis heureux de recevoir des réponses "vous vous trompez" si la réponse explique comment le faire correctement.
En général, arc diff <branch>
fera ce que vous voulez. (Si vous êtes déjà sur la branche, plutôt que sur une branche de rubrique locale, essayez arc diff Origin/<branch>
au lieu.)
Lorsqu'il est invoqué comme ceci, arc
sera en fait différent du merge-base
de l'astuce de la branche et du commit actuel dans la copie de travail, mais c'est généralement ce que vous souhaitez. Si vous voulez vraiment générer un diff par rapport à la pointe de la branche, vous pouvez utiliser arc diff --base git:<branch>
, mais cette différence inclura des changements qui annulent tout commit sur le branch
qui sont des descendants du point de branchement, tout comme git diff <branch>..HEAD
voudrais.
Dans tous les cas, vous pouvez utiliser arc which <commit>
pour prévisualiser ce que arc diff
ça ira. Cela expliquera quelle plage de révision serait sélectionnée, vous montrera la commande pour voir exactement quelles modifications sont incluses et expliquera pourquoi cette plage est sélectionnée.
Vous pouvez aussi utiliser arc diff --preview
pour générer juste un diff, sans l'envoyer pour révision. Cela vous permettra de prévisualiser les modifications avant de les soumettre à quelqu'un d'autre.
Voir également:
https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/
La réponse d'Evan est généralement préférable car elle reflète mieux les meilleures pratiques de workflow git. Je recommande de suivre cela si vous le pouvez.
Si vous avez besoin d'une solution rapide et que vous travaillez (extrait) dans la même branche que vous souhaitez pousser, vous pouvez également faire arc diff HEAD^
ou HEAD~
pour un seul commit, ou arc diff HEAD~N
pour N valide.