Comments (2)
Maybe the merge patch and, the aggregate of the changesets that make up the merge patch, can be compared to deduce a "delta patch" - defined as "the changes made to fix merge conflicts". This would be faster to apply; especially if the number of files touched by the delta is small.
Let me attempt some pseudo code: Usually we have a merge patch (M
) be the application of multiple changesets (Ci
):
M = C1 * C2 * C3 * ... * Cn
When there is a merge conflict, it is resolved by apply a delta patch:
M = C1 * C2 * C3 * ... * Cn * D
We can rearrange this equation to:
Kn * ... * K3 * K2 * K1 * M = D
where Ki
is the inverse changeset of Ci
from tuid.
To get an inverse changeset Ki
when there are no merge conflicts is no issue. We start from the current revision, get the last diff applied and dis-apply it by inverting the additions and subtractions.
But when there is a merge conflict, there is no way to know how the last diff was applied, because it might not have been applied, or even misapplied.
I think that the solution you propose is also trying to solve the inverse of the problem of (1)"How do we merge these patches into a single revision?". You may already recognize what I am getting at. We would have to solve the inverse problem, which requires solving the forward problem that is (1) which is not yet automated. There are existing tools for solving this problem that do so by modifying input (diffs), and checking how well the output (simulated merge) matches the result (true merge).
from tuid.
Related Issues (20)
- Operate without knowing file length
- Store all (file, revision) pairs in ES HOT 2
- Add test to check for uniqueness of TUIDs HOT 1
- Add Python Black linting to travis? HOT 2
- remove use of _add_thread()
- Black format all the files HOT 1
- Run travis tests in python 3.6 HOT 5
- Timeout TUID requests if they take too long.
- Remove the logic of line origins from _get_tuids function HOT 1
- Merge mo-hg code into ActiveData-ETL
- Add /exit command during debug
- Add fixture to call /exit at end of test session HOT 1
- remove redundancy HOT 2
- remove stringify_tuids() HOT 5
- rename ES indicies to have "tuid" prefix HOT 14
- ensure ES indexes are deleted when running tests new_db == "yes"
- Add irc connection info to README so others can find us
- Crash during testing on windows HOT 1
- Why do we use lockers? HOT 4
- Travis CI free usage ends Dec 3; mozilla repos should switch to other CI platforms
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tuid.