Subversion (and Git) Dalhousie University Winter 2019 Version - - PowerPoint PPT Presentation

subversion and git
SMART_READER_LITE
LIVE PREVIEW

Subversion (and Git) Dalhousie University Winter 2019 Version - - PowerPoint PPT Presentation

CSCI 2132: Software Development Norbert Zeh Faculty of Computer Science Subversion (and Git) Dalhousie University Winter 2019 Version Control Systems A version control system allows us to Record the history of changes to the source code


slide-1
SLIDE 1

CSCI 2132: Software Development

Subversion (and Git)

Norbert Zeh

Faculty of Computer Science Dalhousie University Winter 2019

slide-2
SLIDE 2

Version Control Systems

A version control system allows us to

  • Record the history of changes to the source code of some software

we are writing (and many more)

  • Maintain multiple versions of the (software) product
  • Coordinate the work by multiple team members via
  • Multiple branches
  • Support for merging from different branches

Two main types of VCS:

  • Centralized: one central repository (RCS, SCCS, VCS, Subversion, ...)
  • Distributed: multiple distributed repositories (Git, Darcs, Mercurial, ...)
slide-3
SLIDE 3

Version Control Using Subversion (SVN)

A simplified view:

  • Backups: Create backups in


a repository

  • History: “Time machine”,


labelled versions

  • Collaborative, central repository:


Different users can contribute
 and merge changes

Files, directories Working copy 1 Files, directories Working copy 3 Files, directories Working copy 4 Files, directories Working copy 2 SVN repository

slide-4
SLIDE 4

SVN Checkout

  • Create an initial working copy:

$ svn checkout

  • r

$ svn co

SVN repository

slide-5
SLIDE 5

SVN Checkout

  • Create an initial working copy:

$ svn checkout

  • r

$ svn co

Files, directories Working copy SVN repository

slide-6
SLIDE 6

SVN Add

  • Creating files in the working copy does not add them to subversion!
  • svn add adds them to SVN’s list of files to manage
  • The SVN repository does not know about the added file yet!

+ newfile.txt Working copy SVN repository

$ svn add newfile.txt

slide-7
SLIDE 7

SVN Commit

  • svn commit saves local changes to the repository.
  • Local working copy is kept.
  • Local working copy can then be deleted without affecting the repository.
  • svn commit requires a log message that documents the changes that

were made in this commit. $ svn commit -m”Added newfile.txt”

newfile.txt Working copy SVN repository

slide-8
SLIDE 8

SVN Commit

  • svn commit saves local changes to the repository.
  • Local working copy is kept.
  • Local working copy can then be deleted without affecting the repository.
  • svn commit requires a log message that documents the changes that

were made in this commit. $ svn commit -m”Added newfile.txt” $ cd ./; rm -r WorkingCopy

SVN repository

slide-9
SLIDE 9

newfile.txt Working copy 1 SVN repository Working copy 2

SVN Update

  • SVN does not allow you to commit changes unless your local copy

has an up-to-date view of the repository, including changes others may have committed from their working copies.

  • svn update updates your local copy according to the current state
  • f the repository.
  • This may create conflicts that you may have to resolve before

committing your changes.

  • The chance for conflicts increases the longer you work without

running svn update. ⟹ Run svn update periodically.

slide-10
SLIDE 10

SVN Update

  • SVN does not allow you to commit changes unless your local copy

has an up-to-date view of the repository, including changes others may have committed from their working copies.

  • svn update updates your local copy according to the current state
  • f the repository.
  • This may create conflicts that you may have to resolve before

committing your changes.

  • The chance for conflicts increases the longer you work without

running svn update. ⟹ Run svn update periodically.

newfile.txt Working copy 1 SVN repository newfile.txt Working copy 2

slide-11
SLIDE 11

(Re)moving files

  • Moving a file will not move it in the repository.
  • Removing a file will not remove it from the repository.
  • SVN complains about the missing file the next time we try to run svn

commit.

  • svn rm removes the file from the repository.
  • svn mv renames or moves the file within SVN’s file tree.
  • Changes will take effect when running svn commit next.
slide-12
SLIDE 12

SVN Troubleshooting

  • Do not interrupt an SVN operation (unless it’s hung, takes very long).


(This may leave SVN in a corrupt state.)

  • Helpful commands: svn info, svn status -v, svn log -v
  • A working copy contains a hidden .svn directory, which stores

administrative information about the working copy.

  • Resolve problems by moving or removing a working copy and

checking out a new copy.

  • If you allow SVN to save your password, you can remove it with


rm ~/.subversion/auth/svn.simple/+.

slide-13
SLIDE 13

SVN and Git

  • Many version control systems


(SCCS → RCS → CVS → Subversion, Git, Mercurial, Darcs, …).

  • SVN and Git are the most popular representatives of two competing philosophies:
  • SVN (RCS, CVS, …): One centralized repository
  • Git (Mercurial, Darcs, …): Fully distributed, no centralized repository
  • More on Git later.
  • Git can be used in a subversion-like manner:
  • svn co ≈ git clone
  • svn add ≈ git add
  • svn commit ≈ git commit + git push
  • svn update ≈ git pull