benclifford / tmt Goto Github PK
View Code? Open in Web Editor NEWTemporary Merge Tool
License: GNU General Public License v2.0
Temporary Merge Tool
License: GNU General Public License v2.0
When adding a non-existent branch, git merge
fails during materialise.
But with rerere
enabled, a merge failure doesn't cause a materialise failure directly.
tmt
asks rerere
if there are any unresolved merge conflicts (which there aren't - because a merge didn't happen at all), and then tries to git commit
the rerere
-resolved conflicts that it assumes exist and are committable - but they do not exist.
So materialise fails, as desired, but it fails due to that git commit
failing after a chain of unnecessary and confusing attempts at doing something.
Sample output:
benc@fitzroy:~/parsl/src/parsl$ tmt add benc-factor-launch
+ git config rerere.enabled
tmt: temporary merge tool
tmt: Reading context
tmt: Loaded context is: reload-configs-#549, master, mpi_executor_heartbeat, benc-doc-fiddles, benc-filescheme, origin/benc-executor-label, benc-apperrors-apptimeout, benc-apperrors-deserialisation, benc-apperrors-bad-formatting, benc-mypy-550, benc-mypy, benc-remove-timeout
tmt: Adding branch benc-factor-launch
tmt: Materialising context: reload-configs-#549, master, mpi_executor_heartbeat, benc-doc-fiddles, benc-filescheme, origin/benc-executor-label, benc-apperrors-apptimeout, benc-apperrors-deserialisation, benc-apperrors-bad-formatting, benc-mypy-550, benc-mypy, benc-remove-timeout, benc-factor-launch
+ git checkout --detach reload-configs-#549
Warning: you are leaving 5 commits behind, not connected to
any of your branches:
e40536d3 tmt: merging in benc-remove-timeout
188d5e9a tmt: merging in benc-mypy
fc865e35 tmt: merging in benc-mypy-550 -- attempted rerere fix
39f7498c tmt: merging in benc-apperrors-apptimeout
4f8bf2dd tmt: merging in master
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> e40536d3
HEAD is now at 97cecabe... Correct reference to DataManager, not DataFlowKernel
Your branch is up-to-date with 'origin/reload-configs-#549'.
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in master' master
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in mpi_executor_heartbeat' mpi_executor_heartbeat
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-doc-fiddles' benc-doc-fiddles
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-filescheme' benc-filescheme
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in origin/benc-executor-label' origin/benc-executor-label
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-apperrors-apptimeout' benc-apperrors-apptimeout
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-apperrors-deserialisation' benc-apperrors-deserialisation
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-apperrors-bad-formatting' benc-apperrors-bad-formatting
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-mypy-550' benc-mypy-550
tmt: Merge failed
tmt: Merge stdout:
Auto-merging requirements.txt
CONFLICT (content): Merge conflict in requirements.txt
Auto-merging parsl/data_provider/files.py
Auto-merging parsl/__init__.py
Automatic merge failed; fix conflicts and then commit the result.
tmt: Merge stderr:
Resolved 'requirements.txt' using previous resolution.
+ git rerere remaining
tmt: git rerere reports no remaining conflicts, so committing
+ git commit -a -m 'tmt: merging in benc-mypy-550 -- attempted rerere fix'
[detached HEAD a90f5ac1] tmt: merging in benc-mypy-550 -- attempted rerere fix
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-mypy' benc-mypy
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-remove-timeout' benc-remove-timeout
+ git config rerere.enabled
+ git merge --no-ff -m 'tmt: merging in benc-factor-launch' benc-factor-launch
tmt: Merge failed
tmt: Merge stdout:
tmt: Merge stderr:
merge: benc-factor-launch - not something we can merge
+ git rerere remaining
tmt: git rerere reports no remaining conflicts, so committing
+ git commit -a -m 'tmt: merging in benc-factor-launch -- attempted rerere fix'
HEAD detached from refs/heads/reload-configs-#549
Untracked files:
[...]
nothing added to commit but untracked files present
tmt: callCommand: git commit -a -m 'tmt: merging in benc-factor-launch -- attempted rerere fix' (exit 1): failed
this shoudl makes the history of a materialised tmt checkout line up more with tmt status
Sometimes I want to add a branch earlier on in the stack - in practice, for me it seems like the more likely a branch is to be merged to master, the earlier on I want it, and the more experimental/play-like the branch, the later I want it.
This might be as simple as allowed adds on the start (as well as the end) of the stack.
When two branches being merged together conflict, there is a step involving rerere
to make arbitrary changes that make the two branches work together (not just fixing the textual conflict)
When there is no textual conflict, but there is a functional conflict, that fixup step is not available -so tmt
doesn't provide a place to put in such fixups.
It would be nice to have this fixup ability somehow, though I'm not sure what it would look like.
If a branch is deleted that is in the tmt state, then tmt materialise
gives an awkward error message when it cannot merge that branch in.
It should give an error, but a better one than it gives now.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.