Send the link below via email or IMCopy
Present to your audienceStart remote presentation
- Invited audience members will follow you as you navigate and present
- People invited to a presentation do not need a Prezi account
- This link expires 10 minutes after you close the presentation
- A maximum of 30 users can follow your presentation
- Learn more about this feature in the manual
Do you really want to delete this prezi?
Neither you, nor the coeditors you shared it with will be able to recover it again.
Make your likes visible on Facebook?
Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.
Git Power Workshop for HiQ
Transcript of Git Power Workshop for HiQ
http://www.flickr.com/photos/standout/4073471692/sizes/o/ It's not the only one
ClearCase ( http://en.wikipedia.org/wiki/Comparison_of_revision_control_software ) Three-way diff Why a DVCS? ( http://en.wikipedia.org/wiki/Revision_control
Revision control, also known as version control, source control or software configuration management (SCM) ) ( http://stackoverflow.com/questions/2621610/what-git-branching-models-actually-work-the-final-question ) The git/kernel/gitworkflows(7) way The nvie "A successful Git branching model" way http://nvie.com/posts/a-successful-git-branching-model/ Feature branches http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html Do not mix merge and
rebase/cherry-pick The challenge is to define simple rules which developers can agree on / understand ( http://email@example.com/msg39091.html ) Linus' laws: My question to the world: "don't update
your codebase" "let people finish before you use their code" So many branches (discouraged in hg)!
Supports code review
Pick and choose features for release
Requires a lot of discipline Integration branches Keep each branch linear ( make it default: http://d.strelau.net/post/47338904/git-pull-rebase-by-default ) $hg pull --rebase http://stackoverflow.com/questions/2472254/when-should-i-use-git-pull-rebase $git pull --rebase Enable extension in ~/.hgrc:
rebase = This means:
( from http://mercurial.selenic.com/wiki/RebaseProject ) Just two guys being busy in the same branch (from 24hbc): It looks like a relay race... spaghetti! Merge commits within the same branch Redundant
Unmanageable (for diff, log, rebase)
Ugly Just make it sequential instead, commit history is anyway topological more than chronological The behavior when you fetch other's parallell commits They hate each other, merge calculates required changesets, rebase or cherrypick duplicates them and /will/ create conflicts.
Use with caution, what you have rebased/cherry-picked in can never be merged in it's old shape again Pick a standard and stick to it Distributed includes centralized Merge is not commutative Though you can set up some fancy scheme yourself! Baseline Mine (local only) Yours (shared) Mine (copied, rewritten) ( http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities ) Serious tools Public / free hosting (for mercurial) (open source!) (for git, but hg can convert transparently) Is revolutionizing the open source ecosystem! http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=README.rst http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way SSH / Network share Gitosis Patches / bundles http://progit.org/2010/03/10/bundles.html How to collaborate (powered by CVS/subversion) ... we're not gonna get there today, sorry With code review support, topic branch management etc. CVS "Subversion has been the most pointless project ever started" Although not everyone agrees:
http://subversion.tigris.org/subversion-linus.html "CVS done right" Centralized vs Distributed revision control
(or Distributed Version Control (Systems) (DVCS),
or Decentralized Version Control (Systems) )
Git can be anything! http://en.wikipedia.org/wiki/Distributed_revision_control#Distributed_vs._centralized Samba / NFS
Microsoft Word Track Changes
Wiki change histories
Wave protocol applications http://secretgeek.net/vss_cheat_sheet.asp ( commutative is for example a+b = b+a , but a/b ≠ b/a ) Version Control commit quality may vary
Don't keep cruft/experiments in production perpetual beta problem stuff doesn't get maintained The default deteriorates to flat chaos
My cry for help
The kernel way
The nvie way Build quality in Changing line endings log - is something done right?
diff/patch - what's been changed?
blame - who did it?
stats Release management ... which is contrary to Contiuous Integration Monolithic weekly commits...
... with stressed fixes, is trouble Meaningful commits promote quality What (version) is used?
Always functional - always testing
Enable code review Playing around with directories/files Misc thoughts: subversion bases revisions on directories
git/hg cannot work with directories
abstractions are different - integration in tools become different
(cannot choose branch?) Give us VC in Google Docs / Wiki!? Editors proposed changes as patches,
based on my document, not each other,
makes a lot more sense! This is the topic of application-aware
diff/patch, this could be pluggable but not simple Because diff is line-based, it completely breaks the log http://codingsolutions.blogspot.com/2010/08/combining-tdd-calculator-kata-with-git.html http://forums.pragprog.com/forums/123/topics/4552 DVCS in combination with TDD: Favorite recipes http://stackoverflow.com/questions/6671904/git-branch-manager-ui http://www.mibuso.com/forum/viewtopic.php?f=16&t=34091 ... you might as well go crazy Git Power Workshop 2013-05-08 Carl-Johan Sveningsson
firstname.lastname@example.org Today's agenda: [install git]
Why... what... git?
Everything is a branch!
[shoot yourself in foot]
You need rules
My favorite recipes Install git Download and install windows msysgit
Disable CR/LF conversion
Choose to use OpenSSH (at home I prefer Putty) Why... what... git? Why: Distributed Version Control System
What: DVCS by Linus Torvalds
Git?: Git! To build quality in
For release management
Keeping track of what happens
Distributed for flexibility What happened? Distributed for flexibility Git is a DVCS by Linus Torvalds What is Git? Distributed Version Control System
Object-based, not diffs
Repositories, not directories
Flexible! Everything is a branch (in a graph)
It's all graph manipulation All your branch are belong to Git Rules / Workflows / WoW to make it work Overflow material Shooting your foot with git Merge
(Rebase conflict) Deploy website changes using git (using hook scripts)
Subversion with Git frontend without asking anyone for permission: