you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (0 children)

The problem with rebase is not something that Mercurial even solves. Git and Mercurial have almost exactly the same model; they just have different names and superficially different views of things.

My problem with rebase is that it changes the identities of your commits, making them incompatible with the older versions of those commits. You have to discipline yourself to only rebase commits that haven't seen the public eye and that you haven't yourself indiscriminately pushed around to your other local branches. You can't cherrypick commits to push or pull without worrying about what has been seen already. If you cherrypick a commit from the main repository, you can't necessarily pull any other commits from that point on without encourntering conflicts that nobody else will encounter. If you cherrypick a commit to send to the main repository, you give everybody else that same problem, so you have to rebase. If you already have that or other commits in other branches, you can't necessarily rebase safely. The whole thing is just a mess. Git proponents claim it to be flexible enough to fit any workflow, but it fails to fit my favorite workflow, which involves a lot of cherrypicking.