Prezi

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start 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.

DeleteCancel

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.

No, thanks

Git Power Workshop for HiQ

No description
by Carl-Johan Sveningsson on 14 May 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Git Power Workshop for HiQ

Some rights reserved by David (Standout)
http://www.flickr.com/photos/standout/4073471692/sizes/o/ It's not the only one
••‧RCS
SCCS
CVS
Subversion
git
mercurial (hg)
Darcs
GNU arch
Bazaar (bzr)
BitKeeper
TFS
Perforce
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://www.mail-archive.com/dri-devel@lists.sourceforge.net/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:

[extensions]
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
Dropbox
Visual SourceSafe
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
Linus' laws
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?
Feature management
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
cj.sveningsson@hiq.se 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
Fast!
Safe!
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
Cherry-pick
Merge conflict
(Rebase conflict) Deploy website changes using git (using hook scripts)

http://sebduggan.com/blog/deploy-your-website-changes-using-git/


Subversion with Git frontend without asking anyone for permission:

http://git-scm.com/book/ch8-1.html
See the full transcript