[pymvpa] /Developers only/ GIT repository/clones restructuring/migration

Valentin Haenel valentin.haenel at gmx.de
Wed Aug 11 17:48:20 UTC 2010


Hi,

although i have no time to do PyMVPA development, i must admit that git has
become one of my major interests, and its always interesting to see how projects
use it :-) Naturally i have some questions and comments.

* Yaroslav Halchenko <debian at onerussian.com> [100811]:
> Major change
> ============
> 
> you should not push to alioth.debian.org (AKA git.debian.org) your
> development branches (e.g. your_name/master) -- they all should reside
> in your own clones at github -- please move them over or remove from
> alioth::

You neglected to mention that you had already removed them from alioth. ;p

> 	remotes/alioth/val/libsvm+newsl+nodc
> 	remotes/alioth/val/new-sl

I moved them both to my github clone, so i guess if you still have
'/remotes/alioth/val/*' lying around you can get rid of those with
' git remote prune alioth'. Assuming of course that your remote for the alioth
repository was indeed called 'alioth'.

> To remove branch (or tag) from alioth (after you pushed it to your
> github clone), just do::
> 
>     git push <alioth_remote> :<branch_name>
> 
> 
> New workflow
> ============
> 
> We will primarily use github for the development.  Therefore:
> 
> alioth.debian.org (AKA git.debian.org)
>   Will eventually be deprecated.  For now it will carry all releases and
>   associated Debian packaging, since X-Vcs fields in Debian packages
>   point to this repository.  New development will not be pushed into
>   this repository.  All personal branches should migrate off it.
>   Websites will be updated soon to reflect this

Why don't you remove push access for anyone except the core-developers?

> http://github.com/PyMVPA/PyMVPA
>   The main repository -- source for all of your forks on github.
>   It will contain
>
>   - release and distribution releases tags (signed/annotated)
>   - maint/* (maintenance) and dist/* (distribution) branches
>   - master branch -- marginally well tested thus usable (not quite so atm)
>     development branch
>   - website/www, website/dev -- only fast-forward branches which would
>     point to the last location of website updates
>
>   No _tent branches, nor +tent tags should be pushed in there.
>   Only annotated tags for upstream or distribution releases should end
>   up there

Again, the same comment as for alioth.

> http://github.com/<github_user>/PyMVPA
>   Development environments -- feel free to create your own.  Should contain
> 
>   - master branch -- development/integration branch, intended to be
> 	eventually pushed (thus fast-forward only) as master of
> 	PyMVPA/PyMVPA repository

What does this mean exactly? Should the branches in the developers repository
reflect the state of master in the PyMVPA repository? Can developers use their
master to develop stuff in? Will you merge the developers masters?

>   - _tent/ (tentative) feature and _bf/ (bugfix) branches which you
> 	would like us (or you into your master first) to integrate
> 
>   - +tent/ unsigned/unannotated tags to point at the locations when
>     your corresponding _tent/ branch got accepted (not necessary if
> 	feature is "minimalistic" and not worth memorizing)

Would you want us to rebase topic branches onto the PyMVPA master, so that
merges go cleanly?

> 	Do not forget to remove _tent/ branches from your clones upon
> 	integration, with smth like::
> 	  
> 	  git br -d _tent/<name>
> 	  git push origin :_tent/<name>
> 
> 
> Course of action
> ================
> 
> # if you relied on <name>/* branches on alioth and haven't yet created
>   your fork on github, please do so by visiting
>   http://github.com/PyMVPA/PyMVPA and clicking on "Fork button"
> 
> # we did some cleanup of repositories, so to get your local copies
>   cleaned up a bit, please do::
>   
>      git fetch --all --prune
>      git tag | grep -e __ -e last_we -e sg/unittests_passed | xargs git tag -d

This removes old tags, sure i had those locally and removed them. I didn't see
any that were prefixed with '--' though.

> 	 git push <your_github_clone> :last_website_update
> 	 git push <your_github_clone> :sg/unittests_passed

But this only applies if i forked on gihub, before the tags were removed. Since
i only forked today, i do not need to do this.

> WARNING
> =======
> 
> As you could guess from manual removal of tags above, tags in git
> are somewhat viral.  If you add someone's repository as a remote and
> fetch -- you will obtain all tags from that remote, and then they would
> propagate to others who would clone you, etc... So, please

But they would only propagate if i push them right? afaics you must push tags
explicitly, or use the '--tags' switch for push.

> # follow the conventions above
> # do not push to remotes all kinds of useless/temporary tags
> 
> If you want to pull someones' changes into your tree, and do not want to
> fetch his tags, you can pull directly using URL and branchnames, smth
> like::
> 
>     git pull git at github.com:PyMVPA/PyMVPA.git master

It may also make sense to fetch into a temporary branch to examine the changes
before merging:

      git fetch git at github.com:PyMVPA/PyMVPA.git $REMOTE_BRANCH:$LOCAL_TEMPORARY
      git log $CURRENT_BRANCH..$LOCAL_TEMPORARY
      git merge $LOCAL_TEMPORARY

best

V-



More information about the Pkg-ExpPsy-PyMVPA mailing list