Social Codingmashiyat/csc309/Lectures/Social...Distributed Version Control DVC clients have a...
Transcript of Social Codingmashiyat/csc309/Lectures/Social...Distributed Version Control DVC clients have a...
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.
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
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
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/