-
#git #[[(hidden) jOMmlCP4S]] [[git-stacked-rebase]]
-
wrap git-rebase
-
when invoked (through multi-rebase or even regular rebase):
-
idk if we should have a config like in [[(hidden) zmiEcf1EP]].
-
perhaps, to specify which branches depend on which.
-
though, seems unnecessary, we'd only really need the ref to the oldest commit that you depend on, and then everything in between would be picked up, simply from `git log`.
-
but, this would still be useful for safety, to make sure we don't accidentally include what we don't want
-
tho, the rebase edit todo would still show the stuff, so still seems less necessary, maybe even worse if we exclude something. idk yet
-
fact is, the whole point if wrapping git rebase is that it's likely one would forget they want a multi-rebase, because the whole goal of it is to make it __feel__ like normal git-rebase, w/ `branch-end` & `new-branch-end` or similar commands added. so, having an explicit config one sets up once per the latest branch, would allow to identify if we're doing a multi-rebase, or if we should default back to the normal git-rebase.
-
-
-
-
{{[[TODO]]}} would take some safety measures?
-
would launch `git-rebase -i`
-
-
interesting, but not quite
-
nah, but interesting they have `git_python` pkg - when i was thinking about my own version of multi-rebase, i too though this would be useful, for javascript.
-
oh shit
-
reading the title of this:
-
dude! what i want is stacked diffs!!
-
maybe i should rename multi-rebase to stacked-rebase?
-
the tool itself, gh-stack, seems pretty cool, but it's github-specific, and has many things that suck about it. i want mine to be git-specific (lol), with potentially adaptors for creating new PRs, editing PR titles etc., but that's less relevant if we figure out the core functionality.
-
{{[[TODO]]}} i also realized that `new-branch-end` (or `branch-end-new`, if `ben` is good for shortname) is a little subtle -- if you're inserting a new branch (or branches) __between 2 existing ones__ (always the case here) in the same rebase, if you e.g. have normal ordering of 1., 2., 3., etc., now you'd have to add another level, e.g. if inserting between 2. and 3., it now becomes: 1., 2.1, 2.2, 3. perhaps we don't need to modify the existing 2. into 2.1, or actually, perhaps it should be 1., 2., 3.1, 3.2, because we're taking & splitting commits from 3., not from 2. (since a number marks the __end__, __not__ the beginning.). again, how do we retain e.g. github comments here? not worth to focus on right now, but good to keep in mind.
-
-
"git stacked rebase"
-
-
(hidden) 7tAbF0M4H
-
[[roam-traverse-graph]]
-
{{[[TODO]]}} the `run.sh` script in notes-private:
-
we could have a template repo that included the `run.sh` script, which would have the current logic, but the `get_secrets` would be extracted into a separate script, `get_secrets.sh`, and it'd take $1 as which secret getter to use, and people could contribute different secret getters.
-
this would make it reusable; people could contribute different getters (e.g. i use keepass-xc-cli, someone might use gpg, etc etc)
-
-
[[export-html-pages]]
-
{{[[TODO]]}} `runfull.sh` - `git pull` inside `PUBLIC_NOTES_REPO` - if i'm doing a few runs one after another, & they're close in time, i might want to not get my commits spammed (whom will show up on the contribution graph as well, which i don't want), thus `git rebase -i` & `drop` helps, but since `git pull`, it gets undone. otherwise, if i force push, git pull won't do anything ofc, but then temporarily the deployment & thus the whole graph is in an outdated state.
-
{{[[TODO]]}} i think the manual intervals are clearly identifiable - 1. i prefix the commit with `deploy (manual): ` instead of `deploy: `, 2. they differ more in time (e.g. commits of 1 session's multiple runs are close to each other, and to find the last one, you gotta go 1 by 1 from the latest one, and keep averaging the time deltas, and compare the current commit with the one before it).
-
-
{{[[TODO]]}} [[export-html-pages]] fix urls (thus html filenames) - replace spaces with dashes `-`, keep only asciinumeric (latin letters & numbers) chars + `-_` (ez regex)
-
-
(hidden) 28i1d5H8Q
-
{{[[TODO]]}} (hidden) woXGYP3Nv [[(hidden) utmc1e87F]] #[[(hidden) jOMmlCP4S]]
-
(hidden) SjomeQ9Hh
-
(hidden) rPAf3rJd_ [[roam-traverse-graph]] [[git-stacked-rebase]] [[(hidden) DY6wPnICE]] [[codemods]] #[[(hidden) 7c2C8PgIV]] [[(hidden) orJkABRrl]] #[[(hidden) 0EJ4yRKtM]]
-
(hidden) 6JHJa3Pgn
-
(hidden) cA38illCD [[macos]]
-
(hidden) 4Rfynnv5R
-
#git [[git-stacked-rebase]] #[[(hidden) DY6wPnICE]]
-
WHAT git has `libgit2` (in C (ofc)) & SUPPORTS BINDINGS IN OTHER LANGS & THERE'S A TON, JS INCLUDED 🤯🤯🤯
-
-
(hidden) lsnCccj6L
-
[[git-stacked-rebase]]
-
{{[[TODO]]}} to handle multiple branchEnds on the same commit, we could ask the user interactively (similar to `git add --patch`)
-
{{[[TODO]]}} i think we'll need to save this info, similarly to how you have to do it manually w/ [[(hidden) zmiEcf1EP]] - to make sure that if someone else wants to edit (which almost never should be the case, unless ofc it's you yourself, just on a different device), then they'd have this protection already
-
what is a non-goal is protecting against editing one of the partial branches (one of the stacked diffs) - you should not do that, period, and, well, if someone does - too bad! ofc you can get it figured out, but you should not be editing it manually. perhaps then the branch name should clearly reflect it. i originally though prefixing it w/ `stack/` & then adding some more info, will see.
-
-
-
.
-
{{[[TODO]]}} even tho it's not always necessary, it'd provide great protection to have the `.git-stacked-rebase` tracked inside the latest branch
-
e.g. if someone were to add a new branch (even you yourself, in a different device), and forgot about it - we're kinda messed up, as opposed to being able to fully recover.
-
{{[[TODO]]}} maybe instead of re-creating branches, we could, starting from the first one (excluding the initial one), `git reset --hard` it to the previous branch (before taking safety measures ofc ofc), and then run cherry-picks from the latest branch?
-
seems like something closer to actual git rebase haha (i don't actually know but i assume and i think i've heard something similar)
-
wait, lol, why am i misunderstanding it again myself? we're not doing anything in partial branches, we're doing everything in the latest branch, including the normal git rebase, after which we'll have an option to apply the changes into partial branches
-
-
-
the naming "boundaries" & "what's in-between them" is very good. i think i'll still keep the `branch-end` to make it clear, but when explaining how it works, it becomes very easy to understand when you say that the now gray lines with the branch names are boundaries, and what you can do is move commits between boundaries, in addition to doing regular git-rebase operations like squashing/fixing / re-ordering etc.
-
{{[[TODO]]}} re: multiple branches on 1 commit - since choosing 1 would impact what later ones are available, it'd be best to have a tree (top-down or bottom-up) w the choices available & somehow navigate-able & choose-able.
-
-
(hidden) rIUIIRVH3
-
(hidden) 4qSgHE9oH
-
(hidden) 5iGX9sutH
-
[[git-rebase]]
-
(hidden) oIBylnjtY
-
(hidden) 1FASoSawd
-
(hidden) kONN6eQ5F
-
(hidden) iyg5mm0Bx
-
(hidden) e7zjR6win