I just created a new branch as you described above. Everything is now
at 
http://github.com/CuriousCurmudgeon/trac-batch-modify/tree/ticket525-batchmodify.
Have you had a chance to review the code itself?

As far as the wiki goes, I think the points in your summary are a good
start. What messed me up was that I was just using a git command
reference to learn, but didn't read anything about what is considered
a proper git workflow. I think pointing to some resources on proper
git use in the wiki would be helpful.

Thanks for the help. I didn't know anything about cherry-pick or how
to properly rebase. I've been learning as I go, but it sounds like
it's time to grab a book to learn git in some depth.

On Sep 8, 6:42 pm, Brian Meeker <meeker.br...@gmail.com> wrote:
> I will take a look at doing this over the weekend. This was my first
> time using both git and github so I'm not surprised that I didn't work
> in a very git-like way.
>
> -Brian
>
> On Sep 8, 12:33 pm, Christian Boos <cb168...@neuf.fr> wrote:
>
> 169170
>
> >   Hello Brian,
>
> > On 9/7/2010 2:34 AM, Brian Meeker wrote:
>
> > 134135
>
> > > Most of the work on #525 [1] is now done and I would like to start
> > > getting some feedback. There is also a proposal [2]. I added a pull
> > > request on GitHub just to pull everything together in one place [2].
> > > Here is what I have done:
>
> > >   * New batch modify module.
> > >   * Batch modify UI integrated into query page.
> > >   * New permission (TICKET_BATCH_MODIFY)
> > >   * Added a new page to the TracGuide and updated the TOC macro.
> > >   * Wrote tests against new module.
>
> > > I still have a couple of outstanding issues as well. Any suggestions
> > > would be appreciated.
>
> > >   * One of the new batch tests fails. Right now I think the problem is
> > > with the test itself. I cannot reproduce the error through a running
> > > Trac instance. I'm probably doing something wrong with the
> > > EnvironmentStub.
> > >   * I don't have any tests on my query page integration. Are there any
> > > examples of permission testing I can look at? I want to test that
> > > batch data is only added when the user has the appropriate permission.
> > >   * The documentation page I added to the wiki feels off. I don't feel
> > > like I'm explaining the configuration options in a clean way.
> > > Suggestions welcome.
>
> > > I moved the ticket into 0.13 since I am mostly done.
>
> > Thanks! I'll start to review this soon...
>
> > >   I would like to
> > > make a patch to add to the ticket, but I need to figure out the best
> > > way to do that with git. If anybody knows how to easily make a diff
> > > from all of my commits let me know. This is my first time using Git
> > > and GitHub.
>
> > > Thanks,
> > > Brian
>
> > > [1]136171http://trac.edgewall.org/ticket/525
> > > [2]137172http://trac.edgewall.org/wiki/TracDev/Proposals/BatchModification
> > > [3]138173http://github.com/edgewall/trac/pull/1
>
> > But before that, some notes about the development process itself...
>
> > First, it's great that you've started to use git! You're one of the
> > first to do so, and there were no precise instructions about the
> > workflow to use, so not surprisingly there are some rough edges ...
> > As it stands, your changes are a bit difficult to review: you've mixed
> > them with changes taken from upstream, not to mention those from jomae
> > that you later reverted ;-). I suppose this happened because you used
> > the "Fork Queue" feature from github. That tool was rather designed for
> > "upstream" owners who'd like to integrate contributor changes, so the
> > reverse situation than yours actually. Even without this tool, you could
> > have done it wrong by repeatedly merging from upstream. This also would
> > not have been optimal.
>
> > Ideally, you should have made only "Batch Modifications" related
> > changes, in your fork.
> > It is however possible to fix this, let me try to guide you through.
>
> > Your first commit was df77576c9d1da2f78523ea25d4994a4e819fb9c1.
> > After some filtering, I came down to a reduced list of genuine
> > changesets of yours, which we can cherry-pick to a new topic branch.
> > That branch can simply be restarted from the above changeset.
>
> > i.e.
>
> >    $ git checkout -b ticket525-batchmodify
> > df77576c9d1da2f78523ea25d4994a4e819fb9c1
>
> > Then we re-apply the genuine changes only:
>
> >    $ git cherry-pick c96bace617182075008cea62435447ef22affee4
> >    ...
> >    $ git cherry-pick bb9a87373c746bc052370579b44f1eea0cf0c2bc
>
> > I think I got the list right, so instead of redoing the filtering and
> > cherry pick sequence by yourself, you can directly pull the branch from
> > me and verify I picked the appropriate changes ;-)
>
> >  From inside the git working copy of your repository, first verify
> > you're on the right branch:
>
> >    $ git branch
> >    ticket525-batchmodify
>
> > (if not, you missed the `git checkout -b ...` step above)
>
> >    $ git pull139174http://github.com/cboos/trac.gitticket525-batchmodify
>
> > You can now push that branch to your own github repository:
>
> >    $ git push origin ticket525-batchmodify
>
> > And you can now resume work on that branch. Having such a "linear"
> > branch is good enough for a review, and github even makes it easily
> > possible to review the changes as a whole 
> > (e.g.140175http://github.com/cboos/trac/compare/ticket525-batchmodify).
>
> > If we manage to make branches reasonably short-lived, your changes can
> > be later integrated back in Subversion without requiring you to first
> > merge more changes from upstream. In fact, there are only two reasons I
> > see for merging changes from upstream in a topic branch:
> >   - you want to take advantage from some new code (making your job easier)
> >   - you want to check for conflicts, and solve them if any (making our
> > job easier, thanks!)
>
> > In either case, from our perspective it's better if you'd *rebase* your
> > changes, in order to keep your commits in a linear sequence and
> > therefore easier to review. To that end, you can do something like the
> > following:
>
> > $ git remote add edgewall141176http://github.com/edgewall/trac.git#do that 
> > once
> > $ git pull --rebase edgewall trunk
>
> > Once the rebase is complete, remember that you have to "force" (-f) when
> > pushing. This won't play well with any derived branches of your branch,
> > but for a topic branch like this one, there are usually no derived
> > branches, so that shouldn't be a problem.
>
> > Note also that when you were just checking for conflicts and the rebase
> > went through entirely automatically, there's no value in pushing the
> > changes to the outside and you can always "undo" this rebase by
> > resetting the branch to its previous state (see for 
> > reference142177http://stackoverflow.com/questions/134882/undoing-a-git-rebasefor
> > details, which saves me the caveats about reset ;-) ).
>
> > In summary:
> >   - always create a topic branch when working on something, never commit
> > directly on a branch mirroring a remote (i.e. 'trunk' in the case of
> > Trac, which corresponds to 'master' in most other projects)
> >   - try your best to keep the changes linear (favor rebase over merge)
> >   - don't (ab)use github's "Fork Queue" ;-)
>
> > We can discuss and amend the above guidelines in more details, I'll then
> > summarize the results in the wiki.
>
> > -- Christian

-- 
You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to trac-...@googlegroups.com.
To unsubscribe from this group, send email to 
trac-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en.

Reply via email to