|
![](/i/fill.gif) |
On 20/04/2011 18:11, Darren New wrote:
> Or, as an alternate example, say you've been working and every day you
> commit before lunch and you commit before you go home, even if it's not
> working, just so it gets backed up. And you implement two functions, and
> you write code on that, and then realize you should have put that first
> function elsewhere, and you don't need the second function at all, and
> the other code should be in separate objects, and etc etc etc.
>
> And at the end of the week, you have 50 messy changes committed.
>
> With git, you can say "OK, go diff the current version against where I
> branched, and give me exactly one commit with all the changes I need."
> It's trivial to do that in git and then say "now commit *that* change
> for everyone else to see, and abandon all the intermediate changes."
>
> I don't know how you'd do something like that in mercurial or darcs that
> store *changes* in the repository.
Assuming that your working copy matches everything Darcs has in its
history, you'd do this:
1. You "unrecord" the 50 messy commits. That doesn't do anything to your
working copy, just the history Darcs keeps.
2. You "record" a single commit. When you do this, Darcs diffs the whole
working copy against what it has in its history, and records that.
(In other words, if you add 500 lines, commit, delete 450 of those lines
commit, and then you unrecord the two commits and record a new commit,
the 450 lines that you added then deleted don't show up any more.)
Needless to say, you do *not* want to be unrecording any history which
other people have copies of. But if it's only your local repo, it's fine.
Post a reply to this message
|
![](/i/fill.gif) |