Yeah, I wasn't trying to advocate his approach but I did learn new things
such as that git log didn't show commits in chronological order after
rebase. I wrongly assumed it did and that it placed the commits by commit
date (and not push date). The question is: How do you know specifically
which commit caused a bug or if it was even a bunch of commits ? I've never
used git bisect and will look into it, maybe that is the answer.
At any rate, rebasing should obviously be done regularly and not 2 years
later.


On Tue, Apr 30, 2013 at 3:20 PM, Braden Shepherdson <bra...@chromium.org>wrote:

> tl;dr: Author didn't read the docs for git log and git rebase carefully
> enough. They don't work like he suggests, and his example of wanting to
> bisect based on history works just fine if he knew to ignore the timestamps
> and trust the --{since,before,after,until} options; they do the right
> thing. Rebasing is fine and we should carry on using it.
>
>
>
> He's right that working in feature branches rather than on master or some
> other long-lived branch is the right way to do things in git. That's true
> whether your workflow uses rebase or not, and I think most of us do that
> already. Certainly our contributor guide recommends it.
>
> I disagree with his criticism of rebase, however. Most of the article is
> about the alternatives, not about rebase. His fundmental problem with
> rebasing is how it handles timestamps.
>
> It's more complex than simply "the timestamp". Git separates the authorship
> of a commit from its committing. We see this all the time with attribution,
> where a Cordova committer commits an external contributor's change. The
> external contributor is the author, and the Cordova committer is the
> committer. Likewise there is an authorship timestamp and a commit
> timestamp. Rebasing updates only the latter, as you would expect. When
> squashing commits with an interactive rebase, it uses the author and
> authorship timestamp of the first commit being squashed.
>
> git log by default orders commits based on their "topological" order, that
> is, following the ancestor chain. That means that a two-year-old commit
> freshly rebased on top of master appears at the top of git log (because it
> was replayed on top of HEAD), but with its (authorship) timestamp intact as
> years before.
>
> So my main exception to his article and argument is that he supposes git
> log is /chronological/ order, which it is not and never claimed to be.
>
> git bisect uses the same order as git log, because it's important that
> child commits come after their parent(s). Timestamps are irrelevant here.
> If you get a bug report about a bug first noticed on Tuesday afternoon, the
> correct approach is not to swear off rebasing for the horrible damage it
> did to your repository, but to retrieve the actual state of the repo at
> that time. That has nothing to do with authorship timestamps but instead
> with commit timestamps -- when things were really put into the repo.
>
> Getting git log to actually show you the commit timestamp is impossible(?)
> but it doesn't matter: the --since, --after, --before and --until limiting
> flags show you commits based on when they entered the repository, not on
> their authorship time. So the solution to his "bug introduced last Tuesday"
> problem using git bisest is to use git log --before=<Tuesday morning> and
> pick a commit that worked, and git log --before<Tuesday evening> to pick a
> commit that is broken, and then feed them to git bisect.
>
>
> Braden
>
>
> On Tue, Apr 30, 2013 at 2:38 PM, Anis KADRI <anis.ka...@gmail.com> wrote:
>
> >
> >
> http://geekblog.oneandoneis2.org/index.php/2013/04/30/please-stay-away-from-rebase
> >
> > Interesting article.
> >
> > TL;DR
> >
> > - `rebase` actually messes up history chronology. It separates commits
> but
> > they're apparently not in the right order. I did not know this.
> > - branches should be (ab)used and favored to working on the same branch
> to
> > avoid having "Merge" commit messages.
> >
> >
> >
> > On Thu, Apr 4, 2013 at 9:54 AM, Filip Maj <f...@adobe.com> wrote:
> >
> > > +1
> > >
> > > On 4/4/13 10:35 AM, "Michal Mocny" <mmo...@chromium.org> wrote:
> > >
> > > >With all the use of "merge" and "rebase" here I wasn't 100% clear what
> > we
> > > >were advising.  After some discussion, I think the consensus is that:
> > > >
> > > >1. Rebase your branch with master (this changes only your branch, so
> > that
> > > >you apply work on top of most recent master commits)
> > > >1b. Rebase your branch with itself with -i to squash commits (to merge
> > > >work
> > > >into single atomic commits)
> > > >2. merge --ff-only your feature on top of master now
> > > >3. push
> > > >
> > > >Right?
> > > >
> > > >I think saying "I prefer rebase" isn't helping git noobs figure out
> what
> > > >to
> > > >rebase and that you still need a merge at the end, etc.
> > > >
> > > >As Andrew said, we already advice to do this on the wiki, lets stick
> > with
> > > >it.
> > > >
> > > >-Michal
> > > >
> > > >
> > > >On Thu, Apr 4, 2013 at 9:03 AM, Lorin Beer <lorin.beer....@gmail.com>
> > > >wrote:
> > > >
> > > >> the only way I know of to check is manually diff. What's weird is
> > that I
> > > >> received no merge conflict notification when I reverted Max's fix,
> it
> > > >>just
> > > >> silently favoured my version of CDVCamera.h.
> > > >>
> > > >>
> > > >> On Wed, Apr 3, 2013 at 8:25 PM, Max Woghiren <m...@google.com>
> wrote:
> > > >>
> > > >> > That crossed my mind, but I didn't know of a way offhand to
> > determine
> > > >>if
> > > >> > anything else was reverted.  My commit's reversion was hidden away
> > in
> > > >>an
> > > >> > unrelated commit that was merged.
> > > >> >
> > > >> >
> > > >> > On Wed, Apr 3, 2013 at 11:17 PM, Andrew Grieve <
> > agri...@chromium.org>
> > > >> > wrote:
> > > >> >
> > > >> > > Hmm, another question - Max / Lorin, have you checked if any
> other
> > > >> > commits
> > > >> > > were reverted? (is there a way to check?)
> > > >> > >
> > > >> > >
> > > >> > > On Wed, Apr 3, 2013 at 11:08 PM, Andrew Grieve
> > > >><agri...@chromium.org>
> > > >> > > wrote:
> > > >> > >
> > > >> > > > Note that we mandate pull requests to be rebased on our wiki:
> > > >> > > > http://wiki.apache.org/cordova/ContributorWorkflow
> > > >> > > > And we tell committers to rebase as well here:
> > > >> > > > http://wiki.apache.org/cordova/CommitterWorkflow
> > > >> > > >
> > > >> > > > Rebasing is safe in that if you've done it wrong, you'll get
> an
> > > >>error
> > > >> > > when
> > > >> > > > you try to push it.
> > > >> > > >
> > > >> > > > In terms of git emails, rebasing does not cause spam unless
> you
> > > >> rebase
> > > >> > a
> > > >> > > > remote feature branch and then force push it. To solve this,
> we
> > > >> should
> > > >> > > > probably just not use remote feature branches on apache's git
> > > >>servers
> > > >> > > (just
> > > >> > > > use your own github for them).
> > > >> > > >
> > > >> > > >
> > > >> > > > On Wed, Apr 3, 2013 at 4:17 PM, James Jong <
> > wjamesj...@gmail.com>
> > > >> > wrote:
> > > >> > > >
> > > >> > > >> I generally prefer rebasing so that I can see / choose the
> > > >> individual
> > > >> > > >> commits.
> > > >> > > >>
> > > >> > > >> -James Jong
> > > >> > > >>
> > > >> > > >> On Apr 3, 2013, at 2:34 PM, Lorin Beer <
> > lorin.beer....@gmail.com
> > > >
> > > >> > > wrote:
> > > >> > > >>
> > > >> > > >> > I'm leaning towards rebasing. I felt that rebasing was the
> > more
> > > >> > > >> dangerous
> > > >> > > >> > option, due to the potential/power of changing history that
> > is
> > > >> > already
> > > >> > > >> > upstream, but I find the merge commits annoying as well. It
> > > >>sounds
> > > >> > > like
> > > >> > > >> > whenever this happens, our list is going to get spammed
> > > >> regardless.
> > > >> > > >> >
> > > >> > > >> >
> > > >> > > >> > On Wed, Apr 3, 2013 at 11:24 AM, Anis KADRI
> > > >><anis.ka...@gmail.com
> > > >> >
> > > >> > > >> wrote:
> > > >> > > >> >
> > > >> > > >> >> Things start to suck if everyone does it differently (some
> > do
> > > >> > merges,
> > > >> > > >> some
> > > >> > > >> >> do rebases). I like rebase better because it provides a
> > > >>clear/n
> > > >> > > >> history. I
> > > >> > > >> >> usually do merges because I know that most people do that
> as
> > > >> well.
> > > >> > I
> > > >> > > >> would
> > > >> > > >> >> like to do rebase instead but everyone else has to do that
> > to
> > > >> avoid
> > > >> > > >> >> problems/conflicts.
> > > >> > > >> >>
> > > >> > > >> >>
> > > >> > > >> >> On Wed, Apr 3, 2013 at 10:50 AM, Filip Maj <f...@adobe.com
> >
> > > >> wrote:
> > > >> > > >> >>
> > > >> > > >> >>> In terms of the git notification emails, merge or rebase,
> > > >> doesn't
> > > >> > > >> matter.
> > > >> > > >> >>> Each commit that is being merged in in the case of a
> merge,
> > > >>or
> > > >> > > >> reapplied
> > > >> > > >> >>> in the case of a rebase, will be sent as a notification.
> So
> > > >>we
> > > >> > lose
> > > >> > > >> >> either
> > > >> > > >> >>> way. Woot.
> > > >> > > >> >>>
> > > >> > > >> >>> In the case of rebase vs merge in terms of workflow,
> merge
> > > >>drops
> > > >> > all
> > > >> > > >> >>> commits that are coming in from a branch as a single diff
> > and
> > > >> > > applies
> > > >> > > >> >> them
> > > >> > > >> >>> in one go to the top of the branch you are merging into.
> > > >> Handling
> > > >> > > >> >>> conflicts at this point can be overwhelming if you are
> > > >>dealing
> > > >> > with
> > > >> > > >> >>> conflicts from potentially multiple commits.
> > > >> > > >> >>>
> > > >> > > >> >>> With rebase, you are essentially "grafting" your branch
> to
> > > >>the
> > > >> end
> > > >> > > of
> > > >> > > >> the
> > > >> > > >> >>> branch you are rebasing. Each of your branch's commits
> are
> > > >> > reapplied
> > > >> > > >> one
> > > >> > > >> >>> at a time to the end of the rebase branch. If a conflict
> > > >>happens
> > > >> > at
> > > >> > > >> any
> > > >> > > >> >>> point during application of your branch's commits, one
> at a
> > > >> time,
> > > >> > > the
> > > >> > > >> >>> rebase stops, and you have to resolve the conflicts. This
> > > >>can be
> > > >> > > >> easier
> > > >> > > >> >> in
> > > >> > > >> >>> the sense that you have to just deal with one commit's
> > > >>changes
> > > >> at
> > > >> > a
> > > >> > > >> time.
> > > >> > > >> >>> The downside is if your branch has diverged drastically,
> > you
> > > >> will
> > > >> > > >> >> probably
> > > >> > > >> >>> be dealing with these conflicts on every commit, which
> can
> > be
> > > >> time
> > > >> > > >> >>> consuming and long.
> > > >> > > >> >>>
> > > >> > > >> >>> My go-to is usually rebase, as I have a better idea of
> how
> > my
> > > >> > > changes
> > > >> > > >> >>> modify the codebase. That said, there are times to use
> > merge
> > > >>as
> > > >> > > well.
> > > >> > > >> >>>
> > > >> > > >> >>> On 4/3/13 1:40 PM, "Lorin Beer" <
> lorin.beer....@gmail.com>
> > > >> wrote:
> > > >> > > >> >>>
> > > >> > > >> >>>> hmm, I was under the impression that rebasing was more
> > > >> dangerous,
> > > >> > > >> I'll
> > > >> > > >> >>>> reassess my workflow.
> > > >> > > >> >>>>
> > > >> > > >> >>>> Sorry for the trouble Max!
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>> On Wed, Apr 3, 2013 at 9:03 AM, Filip Maj <
> f...@adobe.com>
> > > >> wrote:
> > > >> > > >> >>>>
> > > >> > > >> >>>> Merges are dangerous in that sense. Rebase when you can!
> > > >> > > >> >>>>
> > > >> > > >> >>>> On 4/3/13 11:59 AM, "Max Woghiren" <m...@google.com>
> > wrote:
> > > >> > > >> >>>>
> > > >> > > >> >>>>> Just wanted to quickly chime in hereā€¹Lorin, your
> sizeable
> > > >> merge
> > > >> > > >> >> reverted
> > > >> > > >> >>>>> one of my bug fixes (CB-2732).  Not a huge deal, and a
> > > >>re-fix
> > > >> is
> > > >> > > on
> > > >> > > >> the
> > > >> > > >> >>>>> way, but try to be extra careful when doing merges like
> > > >>that.
> > > >> :)
> > > >> > > >> >>>>>
> > > >> > > >> >>>>>
> > > >> > > >> >>>>> On Tue, Apr 2, 2013 at 8:33 PM, Andrew Grieve <
> > > >> > > agri...@chromium.org
> > > >> > > >> >
> > > >> > > >> >>>>> wrote:
> > > >> > > >> >>>>>
> > > >> > > >> >>>>>> Sounds good. Cool graph Jesse!
> > > >> > > >> >>>>>>
> > > >> > > >> >>>>>>
> > > >> > > >> >>>>>>
> > > >> > > >> >>>>>> On Tue, Apr 2, 2013 at 4:49 PM, Lorin Beer <
> > > >> > > >> lorin.beer....@gmail.com
> > > >> > > >> >>>
> > > >> > > >> >>>>>> wrote:
> > > >> > > >> >>>>>>
> > > >> > > >> >>>>>>> hmm, likely a merge. A local commit before pulling in
> > > >> upstream
> > > >> > > >> >>>>>> changes,
> > > >> > > >> >>>>>>> then doing a merge seems to be the cause.
> > > >> > > >> >>>>>>>
> > > >> > > >> >>>>>>>
> > > >> > > >> >>>>>>> On Tue, Apr 2, 2013 at 1:07 PM, Jesse <
> > > >> > purplecabb...@gmail.com>
> > > >> > > >> >>>>>> wrote:
> > > >> > > >> >>>>>>>
> > > >> > > >> >>>>>>>> merging most likely, set up a filter.
> > > >> > > >> >>>>>>>> I commit to master, checkout 2.6.x, pull master,
> push
> > > >>2.6.x
> > > >> > > >> >> because
> > > >> > > >> >>>>>> I
> > > >> > > >> >>>>>>>> want all the work I am doing in 2.6.0
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>>
> https://github.com/purplecabbage/cordova-wp8/network
> > > >> > > >> >>>>>>>> Looks good to me ...
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>> @purplecabbage
> > > >> > > >> >>>>>>>> risingj.com <http://risingj.com>
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>> On Tue, Apr 2, 2013 at 12:52 PM, Andrew Grieve <
> > > >> > > >> >>> agri...@chromium.org
> > > >> > > >> >>>>>>> wrote:
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>>> There's quite a bit of email spam from both of you
> > and
> > > >>I
> > > >> > > wasn't
> > > >> > > >> >>>>>> sure
> > > >> > > >> >>>>>>>>> what caused it? Do you know?
> > > >> > > >> >>>>>>>>>
> > > >> > > >> >>>>>>>>> rebasing? merging? branching?
> > > >> > > >> >>>>>>>>>
> > > >> > > >> >>>>>>>>> Hard to figure out what actually has changed when
> > these
> > > >> > > happen,
> > > >> > > >> >> so
> > > >> > > >> >>>>>> I'd
> > > >> > > >> >>>>>>>>> like to figure out what causes them. I did one
> > recently
> > > >> > where
> > > >> > > I
> > > >> > > >> >>>>>> rebased a
> > > >> > > >> >>>>>>>>> remote feature branch.
> > > >> > > >> >>>>>>>>>
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>>
> > > >> > > >> >>>>>>>
> > > >> > > >> >>>>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>>
> > > >> > > >> >>>
> > > >> > > >> >>>
> > > >> > > >> >>
> > > >> > > >>
> > > >> > > >>
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> > >
> >
>

Reply via email to