Можете ли вы провести различие с конкретной ветвью git?
Я новичок и для Arcanist, и для git. Я хотел бы иметь возможность создавать дугу diff (экземпляр дифференциального анализатора с использованием Arcanist) против ветки git, которую я в настоящее время проверил/работал (и у меня есть одно локальное нетопленное коммит), а не мастер. Для меня arc docs неясны. Является ли это возможным? Как? Было бы неплохо, если бы ответ работал на 2-3 локальных нетолкнутых коммита.
Также "arc help diff" дает:
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.
Возможно, мне просто нужно сделать "arc diff [commit]", где [commit] является концом целевой ветки? Но я хотел бы быть уверенным, потому что я не хочу загрязнять наш экземпляр Phabricator.
Кроме того, я рад получить ответы "вы делаете неправильно", если ответ объясняет, как это сделать правильно.
Ответы
Ответ 1
Как правило, arc diff <branch>
будет делать то, что вы хотите. (Если вы уже находитесь в ветке, а не в локальной ветке темы, попробуйте arc diff origin/<branch>
.)
При вызове подобным образом arc
будет фактически отличаться от merge-base
кончика ветки и текущей фиксации в рабочей копии, но обычно это то, что вы намереваетесь. Если вы действительно хотите создать diff с концом ветки, вы можете использовать arc diff --base git:<branch>
, но этот diff будет включать в себя изменения, которые отменят любые фиксации на branch
, которые являются потомками точки ветвления, точно так же, как git diff <branch>..HEAD
.
Во всех случаях вы можете использовать arc which <commit>
для предварительного просмотра того, что будет делать arc diff
. Это объяснит, какой диапазон ревизий будет выбран, покажите вам команду, чтобы увидеть, какие именно изменения включены, и объясните, почему этот диапазон выбран.
Вы также можете использовать arc diff --preview
для генерации просто diff, не отправляя его для просмотра. Это позволит вам просматривать изменения, прежде чем отправлять их кому-либо еще.
См. также:
https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/
Ответ 2
Ответ Evan обычно предпочтительнее, потому что он более отражает лучшие методы рабочего процесса git. Я рекомендую следовать этому, если вы можете.
Если вам требуется быстрое исправление и вы работаете (вытащили) ту же ветвь, на которую вы хотите нажать, вы также можете сделать arc diff HEAD^
или HEAD~
для одного фиксажа или arc diff HEAD~N
для N коммитов.