Можете ли вы провести сравнение с конкретной веткой git?

Я довольно новичок как в Arcanist, так и в git. Я хотел бы иметь возможность создать diff diff (экземпляр Phabricator Differential с использованием Arcanist) для ветки git, в которой я в настоящее время извлек/работаю (и у меня есть одна локальная ненажатая фиксация), а не мастер. Для меня документы arc неясны по этому поводу. Является ли это возможным? Как? Было бы неплохо, если бы ответ работал и для 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.

Кроме того, я рад получить ответы «вы делаете это неправильно», если ответ объясняет, как сделать это правильно.


person Will    schedule 06.11.2013    source источник


Ответы (2)


В общем, arc diff <branch> будет делать то, что вы хотите. (Если вы уже находитесь в ветке, а не в ветке локальной темы, попробуйте вместо этого arc diff origin/<branch>.)

При таком вызове arc на самом деле будет отличаться от merge-base кончика ветки и текущего коммита в рабочей копии, но обычно это то, что вы намереваетесь. Если вы действительно хотите сгенерировать разницу для точки ветвления, вы можете использовать arc diff --base git:<branch>, но эта разница будет включать изменения, которые отменяют любые коммиты на branch, которые являются потомками точки ветвления, точно так же, как git diff <branch>..HEAD.

Во всех случаях вы можете использовать arc which <commit> для предварительного просмотра того, что будет делать arc diff. Это объяснит, какой диапазон изменений будет выбран, покажет вам команду, чтобы увидеть, какие именно изменения включены, и объяснит, почему выбран этот диапазон.

Вы также можете использовать arc diff --preview, чтобы создать просто diff, не отправляя его на проверку. Это позволит вам просмотреть изменения, прежде чем отправлять их кому-либо еще.

Смотрите также:

https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/

person Evan Priestley    schedule 09.11.2013

Ответ Эвана, как правило, предпочтительнее, потому что он больше отражает лучшие практики рабочего процесса git. Я рекомендую следовать этому, если вы можете.

Если вам нужно быстрое исправление, и вы работаете (проверено) в той же ветке, в которую хотите выполнить push, вы также можете выполнить arc diff HEAD^ или HEAD~ для одного коммита или arc diff HEAD~N для N коммитов.

person Will    schedule 02.12.2013