All of lore.kernel.org
 help / color / mirror / Atom feed
From: Taylor Blau <me@ttaylorr.com>
To: git@vger.kernel.org
Subject: [TOPIC 5/8] Server side merges and rebases
Date: Thu, 29 Sep 2022 15:21:13 -0400	[thread overview]
Message-ID: <YzXwKXSQwE4NKdIV@nand.local> (raw)
In-Reply-To: <YzXvMRc6X60kjVeY@nand.local>

# Server side merges and rebases (& new rebase/cherry-pick UI?) (Elijah)

- Elijah: tried to implement the git side of the cherry pick as flags to
	git merge subcommand, but everything turned out to be incompatible.
	Used git merge-tree instead, much better, but this doesn't create a
	new commit, only a new top-level tree.
- Rebase and cherry-pick is even more tricky because we need sequences
	of commits. Does the current UI make sense?
- I want to create commits on a not-checked out branch, or rebase, or
	cherry-pick. Not only on the server, but on any client.
- Rebase skips cherry-picks, but that is probably just an optimization
	for when rebase for a shell script. Always doing cherry-picks is
		faster these days, but is a behavior change
- Creating a new commit and modifying the working tree - this lets hooks
	run, but I don't want them to run the server
- Rebase and cherry-pick are typically centered around HEAD, I would
	prefer to replace with just a commit range. If you don't make the
	assumption around HEAD, cherry-pick and rebase aren't that different.
- How do we display conflicts generated on the server side so that ? We
	don't have a representation for that. Taylor: Probably just block the
	operation on the server. Elijah: That's my intuition too.
- We have a lot of users who want to cherry-pick a commit on a bunch of
	LTS branches, it would be great if they don't have to check out those
	branches.
- What about cherry-picking to older branches? It's super slow to check
	out the old branch and it's a big pain to update.
- Want to be able to replay merges. Not just like rebase
	--rebase-merges, but with extra content/resolutions
- Emily: Rebase has famously bad UX. Could we create a new command
	that fixes the problems, like checkout and switch? Elijah: I'm worried
	that I'll copy the old terminology, so I'd need feedback on that.
- Stolee: We could rework the underlying API that supports rebase and
	cherry-pick and use that for the new UX.
	 - Jrnieder: We don't have plumbing commands for this yet, which would
		 be very nice to have. For changes motivated by "cherry-pick has
		 this bad behavior", if we're not making an overall better UX then
		 I'd encourage "go ahead and make cherry-pick no longer have that
		 bad behavior"
	 - Jonathantanmy: I think base + theirs + ours is good enough. Elijah:
		 Sounds like git merge-tree, I don't think that's enough for the
		 server case. I'm sometimes porting over multiple commits instead of
		 just one, ort can do some optimizations on that, but one-by-one
		 invocations would lose that info. Also, this isn't enough to replay
		 merges.
- Peff: It would be good to have a machine-readable representation of a
	conflict that the server can serve, but also can be materialized by
	client tools.  Taylor: It would be even cooler if we could push that
	representation and have "collaborative" merge resolution. Elijah:
	Merge-tree can output files with conflict markers. We'd have to add
	info to represent the index conflict. With rebase, we'd need to
	represent different conflicts at different points.
- Martin: Does ort handle conflicts with renames? E.g. renaming two
	files to the same name. Elijah: Yes
- Elijah: One format would be input to git update-ref --stdin, so
	instead of making all of changes, you could output the data that git
	update-refs can ingest later.
- Waleed: Do you support rebasing non-linear sequences? Elijah: Yes,
	but..  (didn't hear)

  parent reply	other threads:[~2022-09-29 19:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-29 19:17 Notes from the Git Contributor's Summit, 2022 Taylor Blau
2022-09-29 19:19 ` [TOPIC 1/8] Bundle URIs Taylor Blau
2022-09-29 19:19 ` [TOPIC 2/8] State of SHA-256 transition Taylor Blau
2022-09-29 19:20 ` [TOPIC 3/8] Merge ORT timeline Taylor Blau
2022-09-29 19:20 ` [TOPIC 4/8] Commit `--filter`'s Taylor Blau
2022-09-29 19:21 ` Taylor Blau [this message]
2022-09-29 19:21 ` [TOPIC 6/8] State of sparsity work Taylor Blau
2022-09-29 19:21 ` [TOPIC 7/8] Speeding up the connectivity check Taylor Blau
2022-09-29 19:22 ` [TOPIC 8/8] Using Git securely in shared services Taylor Blau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YzXwKXSQwE4NKdIV@nand.local \
    --to=me@ttaylorr.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.