On Jun 4, 2013, at 2:49 AM, [email protected] wrote:
> Hi,
>
> what about Bitbucket (www.bitbucket.org) and mercurial ?
>
> Don't they provide the same features ?
>
> I'm asking because we are in Python land. ;-)
BitBucket isn't as slick as GitHub.
Mercurial isn't as well known, and the storage isn't as optimal.
SqlAlchemy recently migrated from hg to git -- here is Mike Bayer's rationale:
http://www.sqlalchemy.org/blog/#sqlalchemy-migrated-to-git
It's trivial to clone a repo with git. Also, I believe that if you configure a
working repository to follow all the upstream changes, you essentially have a
full clone. So if the primary ever went down, one of the package maintainers
could instantly become the new upstream.
I use git+github for all my open source work, and subversion for private stuff
-- only because i'm too lazy to set up a remote hg repo. Git was hard to get
used to, and can be difficult at times, but it's a significantly better
experience. The biggest win with git for me, is that you have offline commits.
I've found myself forced to be online for a svn commit too many times ( while
restructuring projects ). git is more flexible -- you can do everything
locally and never have to push to the server until you're ready ( no more "part
1 of 3" repo commits ). then you can squash all the commits into a single
server push.
The code review process on git and github is great; and the fork + merge model
is much easier than working with SVN.
someone mentioned `rebase` and `squash`.
these articles do a much better job at describing it than i can:
http://git-scm.com/book/en/Git-Branching-Rebasing
http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
in a nutshell, rebase allows you to start replaying commits onto a working
copy. you can then pick and choose which are kept, tossed, or merged. it's
basically a way to rewrite or replay history.
the only downside to git, is that once something goes onto the server... it's
there for good. it's possible to rebase a repo back to a specific commit ,
then replay without specific commits, and "push -f" to overwrite the history...
but if anyone updated against the server, those commits will come back and
haunt you. over and over and over again.
there's also a great plugin called "git flow"
http://nvie.com/posts/a-successful-git-branching-model/
https://github.com/nvie/gitflow
it's just some shell scripts that help automate how you organize your branches
for fixing issues.
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python