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 24 September 2014

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