mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-21 22:32:41 +01:00
No description
953d742a1a
Summary: Ref T13576. See that task for discussion. When a user runs `arc land --pick A`, they may be selecting a range of commits ("X..Y") which have ancestors ("V..W") that should NOT land. We must slice "X..Y" out of history before we can merge it, to avoid landing changes from "V..W". When "X..Y" is simple and linear, we can rebase the range to pick our desired slice out of history. When "X..Y" includes merge commits, we frequently can not, and I could not identify any simple alternative. The best alternative I came up with is this "reduce" operation: - squash "into" onto Y, producing S, to guarantee there are no natural conflicts; - squash S onto X^, producing T, to get rid of the merge commits; - rebase T onto "into", producing R, to slice "X..Y" out of history; - squash R onto "into", producing Q. (R and Q will be the same, but this simplies the code.) This feels flimsy and fragile, but I can't immediately find a way to break it. See T13576 for more discussion. Test Plan: - Applied conflicting changes to `example.txt` in `master` and `feature1`. - Ran `arc land`, got a merge conflict. - Resolved the conflict with `git merge master`. - Ran `arc land`. - Before: merge conflict. - After: `arc land` resolves the merge correctly. - Stacked `feature2` on `feature1`, and made various mutations to `feature1` and `feature2`, then ran `arc land --pick feature2`. Changes made in `feature1` should not land, and they mostly do not. See T13576. Maniphest Tasks: T13576 Differential Revision: https://secure.phabricator.com/D21590 |
||
---|---|---|
bin | ||
externals | ||
resources | ||
scripts | ||
src | ||
support | ||
.arcconfig | ||
.arclint | ||
.arcunit | ||
.editorconfig | ||
.gitignore | ||
LICENSE | ||
NOTICE | ||
README.md |
Arcanist is the command-line tool for Phabricator. It allows you to interact with Phabricator installs to send code for review, download patches, transfer files, view status, make API calls, and various other things. You can read more in the User Guide
For more information about Phabricator, see http://phabricator.org/.
LICENSE
Arcanist is released under the Apache 2.0 license except as otherwise noted.