Title: Contemporary source control for Pharo
Speaker: Max Leske
Wed, August 20, 2:30pm – 3:00pm
Video Part1: https://www.youtube.com/watch?v=fa9Zpxyt_no
Video Part2: https://www.youtube.com/watch?v=vpag70LmGrY
Description
Abstract: SVN [1], Mercurial [2] and Git [3] probably are the predominant source control systems used for open source software. Each of these systems brings many tools to the table to visualize meta data, search for versions and content and, most importantly, manage versions and changes to versionable entities. Unfortunately for us, Pharo does not natively support any of these systems which makes access for newcomers harder and inhibits our sharing abilities.
In this talk I want to:
- show what support for different source control systems can do for us
- present the work that is being done on integrating Git into Pharo
- discuss how this work will enable the integration of arbitrary source control systems into Pharo
- touch upon the future of Monticello and Metacello in Pharo
[1] http://subversion.apache.org
[2] http://mercurial.selenic.com
[3] http://git-scm.com
Bio: Max Leske is a master student of University of Bern and working with netstyle.ch
14. Cypress problems
• moves / renames not tracked
• very deep directory structures
• files instead of objects
• checked out version = only visible version
• hard to merge
19. Support for arbitrary
backends
Matthias Kleine,
Robert Hirschfeld,
Gilad Bracha
An abstraction for version
control systems
:
https://www.hpi.uni-potsdam.de/hirschfeld/publications/media/
KleineHirschfeldBracha_2012_AnAbstractionForVersionControlSystems_HPI54.pdf
24. Model over matter (mostly)
Versioning model
Git adaptor Mercurial adaptor ? adaptor
commit
tree
blob
reference
changelog
manifest
filelog
tag
onesinglefile™
25. Why libgit2?
• well documented
• easy to understand
• fast response from community
• Git not required on host
• not maintained by us
• compiled to target platform
• no shell
32. Revision meta data in Git
commit
tree
#printOn: - v0
reference
tree
#printOn: - v1
#printOn: - v2
#printOn: - v3
33. Revision meta data in Git:
the bad
• not manageable through Git
• need extra tools
• information only available to select few
• overhead (who will look at it)
34. Revision meta data in Git:
the good
• collect data for research
• fine grained history
• don’t have to look at it if you don’t want to