Applying patches from Phabricator?

Hello,

Is there a way for Phabricator to retain the patches as originally uploaded?

When using the “Download Raw Diff” button, it seems Phabricator reformats the patch, loosing the parent commit along the way, so often patches don’t apply.

The following works, because I’ve got the latest checkout on master, and the patch was rebased recently:

F:\llvm-project>curl https://reviews.llvm.org/D77421?download=true -L >patch.txt

F:\llvm-project>git apply -3 patch.txt

But if I switch to the release branch and try to apply:

F:\llvm-project>git reset && git checkout .

(…)

F:\llvm-project>git checkout release/10.x

(…)

F:\llvm-project>git apply -3 patch.txt

error: patch failed: llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:529

error: repository lacks the necessary blob to fall back on 3-way merge.

error: llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp: patch does not apply

Is there some magic I’m not aware of?

Thanks!

Alex.

Hi Alex,

Have you tried using Arcanist?

https://llvm.org/docs/Phabricator.html#requesting-a-review-via-the-command-line

-Andrzej

Try using patch instead of git (due to fuzz)

$ patch -p1 < D77421.diff
patching file llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
Hunk #1 succeeded at 454 (offset -46 lines).
Hunk #2 succeeded at 486 with fuzz 1 (offset -47 lines).
Hunk #3 succeeded at 1278 (offset -142 lines).
Hunk #4 succeeded at 1321 (offset -142 lines).
patching file llvm/test/Transforms/WholeProgramDevirt/Inputs/unique-retval-same-vtable.yaml
patching file llvm/test/Transforms/WholeProgramDevirt/import.ll
patching file llvm/test/Transforms/WholeProgramDevirt/unique-retval-same-vtable.ll
patching file llvm/test/Transforms/WholeProgramDevirt/unique-retval.ll

Best,

Jinsong Ji (纪金松), PhD.

XL/LLVM on Power Compiler Development
E-mail: jji@us.ibm.com

graycol.gifAlexandre Ganea via llvm-dev —04/09/2020 10:30:26 AM—Hello, Is there a way for Phabricator to retain the patches as originally uploaded?

Or use cherry-pick in your scenario.

If you apply the patch to master

F:\llvm-project>curl https://reviews.llvm.org/D77421?download=true -L >patch.txt
F:\llvm-project>git apply -3 patch.txt
Then switch to 10.x branch and cherry-pick it.
F:\llvm-project>git checkout release/10.x
F:\llvm-project>git cherry-pick master

If you are using arc, it will be simpler:

arc patch D77421
git checkout release/10.x
git cherry-pick arcpatch-D77421

Best,

Jinsong Ji (纪金松), PhD.

XL/LLVM on Power Compiler Development
E-mail: jji@us.ibm.com

graycol.gifJinsong Ji via llvm-dev —04/09/2020 10:38:20 AM—Try using patch instead of git (due to fuzz) $ patch -p1 < D77421.diff

Andrzej, Jinsong, thanks for the help, using patch works! I’ll install arcanist as well.

graycol.gif