hg, git, fossil, ...

Ian Kelly ian.g.kelly at gmail.com
Thu Aug 28 21:56:08 EDT 2014


On Wed, Aug 27, 2014 at 11:58 PM, Marko Rauhamaa <marko at pacujo.net> wrote:
> I don't think a working VC system needs to contain much more than that.
> Hg stays closer to the simple ideal than git, which really fails at
> being a black box. I don't see why git has staging or branches, for
> example.

I use short-lived development branches in git all the time. Start
working on a bug or feature, checkout a new branch specifically for
that work. Make changes, commit, make changes, commit, make changes,
commit, finish the feature, merge back into master. Once the branch is
merged back in, I just delete it. If something else comes up that I
need to work on while I'm on a feature branch, I can easily just do a
checkpoint commit and create a clean new branch from master to work
on. I never do any actual development work on master.

I find staging less useful, but it occasionally comes in handy when
I'm ready to commit some work but there are these other files I've
already changed that should really be part of the next commit.

> Or why can't I revert my changes to a file easily?

"git checkout <filename>" is not easy?

> The main problem with hg (and git) is the way cherrypicking is done.
>
> See these graphics:
>
>  [1]   Product-Ver1
>             |
>             | bugfix
>             |
>             V          feature development
>        Product-Ver1' ----------------------> Product-Ver2'
>
>                        feature development
>  [2]   Product-Ver1 -----------------------> Product-Ver2
>                                                   |
>                                                   | bugfix
>                                                   |
>                            cherry-picking         V
>        Product-Ver1' <---------------------- Product-Ver2'
>
>
> My beef is this: The starting point and end result of [1] and [2] is
> identical. The version histories of Product-Ver1' and Product-Ver2'
> should usually also be identical. In hg and git, they are not. In CVS,
> they are not. In SVN, they are not.

Why should they be identical? If they are, then that means they're not
accurately reporting the actual history of the repository. I don't
understand why you would even want this.



More information about the Python-list mailing list