[Twisted-Python] github, again
Jonathan Vanasco
twisted-python at 2xlp.com
Thu Jun 6 10:08:59 MDT 2013
On Jun 4, 2013, at 2:49 AM, tds333 at gmail.com 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.
More information about the Twisted-Python
mailing list