[Python-Dev] git repositories for trunk and py3k

Brett Cannon brett at python.org
Fri Jul 18 21:34:24 CEST 2008


On Fri, Jul 18, 2008 at 12:31 PM, Neil Schemenauer <nas at arctrix.com> wrote:
> On Fri, Jul 18, 2008 at 11:57:21AM -0700, Brett Cannon wrote:
>> I figured this out. I just did ``git reset --hard``, did the proper
>> "fetch;rebase" dance, resolved the conflict, did ``git add`` and then
>> continued with the rebase. It all looks fine now.
>
> Doing a fetch followed by a rebase is similar to what "svn up" does
> and is what you want in this case.  Rebase rewrites patches
> (commits) so that they apply to a different version of a tree (they
> will get new SHA ids).  If you use merge then your patches (commits)
> stay unchanged and a new commit object is created that contains the
> info required to integrate them with the new tree.
>
> Using merge is also useful in certain cases (e.g. in a distributed
> environment, if you have published your changes already and people
> have them in their repositories) but the downside is the extra merge
> commit object.  However, since in this specific case you are always
> pushing back to a central repo you should avoid merge.
>
> BTW, the rebase command is very handy if you are maintaing some
> change over a longer term.  Here's an example workflow:
>
>    <start with git checkout>
>    git checkout -b my_feature # create a private branch
>    <edit code, commit changes>
>    git checkout master # back to main branch
>    <time passes>
>    git fetch git-svn && git rebase git-svn # update master to latest code
>    git checkout my_feature # back to private branch
>    git rebase master # make my changes apply to latest code
>

That's what I have been doing, except using "merge" in the master branch.

> To generate a series of patches to send somewhere:
>
>    git format-patch --stdout master..my_feature > my_feature.txt

OK, so that's how you use format-patch.

-Brett


More information about the Python-Dev mailing list