Social Codingmashiyat/csc309/Lectures/Social...Distributed Version Control DVC clients have a...

26
Social Coding

Transcript of Social Codingmashiyat/csc309/Lectures/Social...Distributed Version Control DVC clients have a...

Social Coding

The Cathedral and the Bazaar

Eric S. Raymond Cathedral model: Source code is available with each software release, but code developed between releases is restricted to the code developers.

The Cathedral and the Bazaar

Eric S. Raymond Bazaar model: Code is developed over the Internet in view of the public.

The Bazaar

• Release early. Release often • More transparent, users as co-developers • Greater visibility of bugs, lots of testers • Recognize good ideas (from others) • More scrutiny, and experimentation possible.

Development is Collaborative

Development is Collaborative

Development is Collaborative

Development is Collaborative

Version Control System (VCS)

CVS, SVN, Git, Mercurial, Dropbox(!), etc.

Version Control System (VCS)

Local Version Control saves changes to files in a database. Centralized Version Control saves changes to a shared server Distributed Version Control allows for easier sharing of files then LVC and also eliminates problems that could occur if access to the server is lost under a CVC system.

Distributed Version Control

DVC clients have a complete backup of the files on their computer. If the server is lost the client just waits to regain contact and then uploads changes.

-- Each client has a complete history of all changes stored locally.

-- The client can also access all changes made to the files historically with a simple command.

-- Git monitors all file change, constantly.

DVC

Distributed systems like Mercurial and Git are newer and are gradually replacing centralized systems like CVS and Subversion.

Git

• Created in 2005 • Designed for speed • Support for many parallel branches • Distributed, promotes local work • Able to handle large projects

Git (Create a new repository)

touch  README.md  

git  init  

git  add  README.md  

git  commit  -­‐m  "first  commit"  

 

 

git  remote  add  origin  https://github.com/

mashiyat/CSC309.git  

git  push  -­‐u  origin  master  

Git (pushing existing repository)

git  remote  add  origin  https://github.com/

mashiyat/CSC309.git  

 

git  push  -­‐u  origin  hotfix  

 

File status lifecycle in Git

Git (pushing existing repository)

git  remote  add  origin  https://github.com/

mashiyat/CSC309.git  

 

git  push  -­‐u  origin  master  

 

Git (Some other usefull command) git  config  -­‐-­‐list  #  Show  settings  

git  config  -­‐-­‐global  user.name  "Mashiyat"  

git  config  -­‐-­‐global  user.email  

[email protected]  

git  config  user.name  "Mashiyat"  

git  config  user.email  [email protected]  

git  config  -­‐-­‐list  #  Show  settings  

git  help    

Git (Commands: diff & delete) git  diff  #  Shows  what  you  changed,  but  haven't  

staged  

git  diff  -­‐-­‐cached  #  Shows  what  has  been  staged,  

but  not  committed  

rm  DeleteMe.txt  #  If  you  remove  a  file  it  shows  

as  "Changed  but  not  updated"    

git  status  #  If  you  remove  a  file  it  shows  as  

"Changed  but  not  updated"  

 

Git (Commands: delete & rename) git  rm  DeleteMe.txt  

git  status  #  Shows  that  the  file  was  deleted  

//If  you  have  committed  a  file  to  be  removed  you  

must  add  the  -­‐f  option  

 

git  rm  -­‐-­‐cached  DeleteMe.txt  #  Keep  file,  but  

remove  from  staging  area  

git  mv  DeleteMe.txt  Delete.txt  #  Renames  a  file  

 

Git (Commands: logs)

git  log  #  Shows  all  of  the  previous  commit  

messages  in  reverse  order    

git  log  -­‐p  -­‐2  #  Shows  the  last  2  commit  changes  

git  log  -­‐-­‐since=1.weeks  #  Show  only  changes  in  

the  last  week  

git  log  -­‐-­‐since="2014-­‐04-­‐12"  #  Show  changes  since  

this  date  

 

Git (Commands: logs) git  log  -­‐-­‐author="Derek  Banas"  #  Changes  made  by  

author  

git  log  -­‐-­‐before="2014-­‐04-­‐13"  #  Changes  made  

before  this  date  

 

git  commit  -­‐-­‐amend  #  If  you  want  to  change  your  

previous  commit  

git  reset  HEAD  AndroidManifest.xml  

 

Git (Working with Remotes)

git  remote  -­‐v  #shows  you  the  URL  that  Git  has  

stored  in  remote  server  

git  clone  https://github.com/mashiyat/CSC309.git  

git  remote  

git  remote  add  csc309  https://github.com/

mashiyat/CSC309.git  #git  remote  add  [shortname]  

[url]  

 

Git (Working with Remotes)

git  fetch  csc309    #fetch  pulls  the  data  to  your  

local  repository  

   

git  pull  csc309    #fetch  and  merge  the  data  to  

your  local  repository  

 

git  push  origin  master  

 

Git (Tag & Merge)

git  tag  

git  push  origin  v1.5  

git  push  origin  -­‐-­‐tags  

git  checkout  testing  #switch  to  an  existing  

branch  

git  checkout  master  

git  merge  hotfix  

References

http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging http://www.newthinktank.com/2014/04/git-video-tutorial/ Useful Tools: Free private repo: https://bitbucket.org/ Real time collaboration: https://c9.io/ Task Tracking: https://Freedcamp.com or https://github.com Organizing your tasks and thoughts : https://trello.com or https://www.online-task-manager.com/