subversion client

97
Subversion How to use Tortoise SVN client for Subversion

Upload: rchakra

Post on 07-Nov-2014

2.192 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Subversion client

Subversion

How to use Tortoise SVN client for Subversion

Page 2: Subversion client

Current Versions of Server

• Subversion 1.4.6

• Open source from Tigris.Org

Page 3: Subversion client

Current Version of client

• TortoiseSVN 1.4.8 works against Subversion 1.4.6

• Available at Tigris.org

• It works in the Windows Explorer, and is not bound to any software development tool

Page 4: Subversion client

• Is similar to most industrial strength Version control systems

• More robust– Atomic commits – Concurrent usage possible– Repository is stored in trees with differential data– No options like ‘Leave local copy / checkout from

repository ?’– Can be used remotely with greater confidence

Advantages of SVN over VSS

Page 5: Subversion client

‘Check out’

• Check out is done the first time the client working copy (working folder) is being set up

• Create a folder as instructed by the TL (maybe D:/SVNClient)

• Right click on this new folder and choose ‘SVN Checkout’

Page 6: Subversion client
Page 7: Subversion client

Check out

• Click on the ‘SVN Checkout’ option in the pop up menu

• A Checkout dialog box will pop up

• Key in the URL of the Subversion repository (svn://chakravarthy:3691/myWebApp)

• Ensure checkout directory is correct

• Click ‘Ok’

Page 8: Subversion client
Page 9: Subversion client

Checkout

• The authentication dialog box will open up

• Key in your ‘Username’ and ‘password’

• Press ‘Ok’

• The checkout dialog box will list the files it has checked out and it’s revision number

Page 10: Subversion client
Page 11: Subversion client

Checkout

• The SVNClient folder now has a green tick mark to say that the client working folder (called working copy) is in synch with the repository

Page 12: Subversion client
Page 13: Subversion client

Work as usual ..

• Work as usual to edit or add files in the folders which have the working copy

• Please note that TortoiseSVN is not integrated into Visual Studio.NET .

Page 14: Subversion client
Page 15: Subversion client

Working on the files

• After some time you save your work

• Now notice the red tick mark on the file you just now edited

Page 16: Subversion client
Page 17: Subversion client

What was the change I did ..

• You can see what are the changes you did just now

• Right click on the file with the red tick, choose ‘TortoiseSVN’ and choose ‘Diff’

Page 18: Subversion client
Page 19: Subversion client

Changes I did …

• You get a difference between the working copy and the version you had recently updated from server

Page 20: Subversion client
Page 21: Subversion client

Send changes to repository

• Now that you are satisfied with the change you made, you can ‘commit’ the change to the server

• Right click on the file, or any of its parent folders, and choose ‘SVN Commit’

Page 22: Subversion client
Page 23: Subversion client

Key in commit message

• The log message box opens for you to select the files you wish to commit. Tick the files you wish to commit

• Only commit files that you are editing, or files which are needed to rebuild the system . Do not commit outputs of compilation

• Key in a suitable message for this commit

Page 24: Subversion client
Page 25: Subversion client

Oops file has changed in repository

• If someone else has already committed the very same file in the meantime, SVN will ask you to first update your working copy

Page 26: Subversion client
Page 27: Subversion client

Update the working copy

• Right click the file or the parent folders and choose the ‘SVN Update’ option

Page 28: Subversion client
Page 29: Subversion client

Merged

• You will now get a ‘merged’ message box which means that your change and the change in the server have got merged in the working copy

Page 30: Subversion client
Page 31: Subversion client

My first conflict !

• If the file I am trying to commit is out of date, SVN asks me to update my copy first

• So I update it• However, if the same lines have been

edited or touched in my working copy as well as the Repository copy, then I get a conflict error message …..

• The file and folders now have a yellow warning sign

Page 32: Subversion client
Page 33: Subversion client

When there is a conflict …

• When there is a conflict there are 2 additional files beside the file which has the conflict

• These files have names like ‘filename.mine’, ‘filename.revisionx’ and ‘filename.revisiony’

• Open the conflicting file in an editor

Page 34: Subversion client

Conflict

• The changes made by you and the changes made by the other SVN user are marked by arrows <<<<<<<

• Your change has a caption ‘.mine’ and the other change has a caption ‘.r(n)’ where n is the revision number

Page 35: Subversion client
Page 36: Subversion client

Edit the conflicting file

• Retain the change which is correct, and remove the unwanted change

• Save the file

Page 37: Subversion client
Page 38: Subversion client

Click the ‘Resolved’ option

• Having cleaned up the conflicting file, now right click the file or the parent folders and click the ‘Resolved’ option

Page 39: Subversion client
Page 40: Subversion client
Page 41: Subversion client

Conflict has been resolved

• Conflict has been resolved , unwanted revision files removed

• Now we need to commit

Page 42: Subversion client
Page 43: Subversion client

How to add a file to the repository

• If you have added a file in your working copy which needs to be added to repository, right click the file and click ‘Add’

• The ‘file’ that has been added will have a blue plus sign – but it is not yet in repository !

Page 44: Subversion client
Page 45: Subversion client
Page 46: Subversion client
Page 47: Subversion client

Deleting a file in Server

• If you choose a folder / file , right click , choose ‘Delete’ and then commit, the files / folders will get deleted from the repository

• If you only want to delete the client copy and get a fresh one from repository, use a normal file delete and Update your root folder

Page 48: Subversion client

Delete a file in SVN

Page 49: Subversion client

Deleting a file using Tortoise

• Now the file ‘A new file’ has disappeared from the folder since I used the Tortoise Delete option against the file

Page 50: Subversion client
Page 51: Subversion client

Now I try to commit the parent folder

Page 52: Subversion client

The folder needs to be comitted

• After deleting a file using the Tortoise client, the parent folder needs to be committed for the file to be deleted from the repository

• Otherwise the client file would have been deleted but the server repository still has the file

Page 53: Subversion client
Page 54: Subversion client

Use Tortoise rename

• If you wish to rename a file which is under SVN, use the Tortoise rename, not the Windows file rename

Page 55: Subversion client
Page 56: Subversion client

Renaming

• The tortoise rename does 2 steps – it first copies the file to another file with the new name and it deletes the earlier file

Page 57: Subversion client
Page 58: Subversion client

Commit folder after rename

Page 59: Subversion client

View the history of all changes

• To view who did what , right click the folder, or file and choose ‘Show Log’

Page 60: Subversion client
Page 61: Subversion client
Page 62: Subversion client

See modifications

• Right click and choose ‘Check for modifications’

Page 63: Subversion client
Page 64: Subversion client
Page 65: Subversion client
Page 66: Subversion client

To see contents of Repository

• Right click any item in SVN client, choose ‘Repo browser’

Page 67: Subversion client
Page 68: Subversion client
Page 69: Subversion client

How to tag

• svn copy comes to the rescue. If you want to create a snapshot of /calc/trunk exactly as it looks in the HEAD revision, then make a copy of it:

• $ svn copy http://svn.example.com/repos/calc/trunk \ http://svn.example.com/repos/calc/tags/release-1.0 \ -m "Tagging the 1.0 release of the 'calc' project." Committed revision 351. This example assumes that a /calc/tags directory already exists. (If it doesn't, see svn mkdir).

Page 70: Subversion client

Authorization

• SVN can authorize a person to read, or read and write , or not read any particular folder

• So the SVN Admin will be assigning folder rights to different roles so that each user of a certain role only gets the file rights that is required for him

Page 71: Subversion client

Resources

• Please read the Tortoise SVN Help which will be in the client

• You could also read the SVN Book in the site http://svnbook.red-bean.com/

Page 72: Subversion client

Glossary – BASE revision

• This is the revision the file or folder was in, when the last checkout, update or commit was run .

Page 73: Subversion client

Glossary - Branch

• You can create a branch off the main development line so as to develop a new feature without rendering the main line unstable. Or you can branch a stable release to which you make only bugfixes, while new developments take place on the unstable trunk. In Subversion a branch is implemented as a “cheap copy”.

Page 74: Subversion client

Glossary - Blame

• This command is for text files only, and it annotates every line to show the repository revision in which it was last changed, and the author who made that change. Our GUI implementation is called TortoiseBlame and it also shows the commit date/time and the log message when you hover the mouse of the revision number.

Page 75: Subversion client

Glossary - Commit

• This Subversion command is used to pass the changes in your local working copy back into the repository, creating a new repository revision.

Page 76: Subversion client

Glossary BDB

• Berkeley DB. A well tested database backend for repositories, that cannot be used on network shares. Default for pre 1.2 repositories.

Page 77: Subversion client

Glossary - Checkout

• A Subversion command which creates a local working copy in an empty directory by downloading versioned files from the repository.

Page 78: Subversion client

Glossary - Copy

In a Subversion repository you can create a copy of a single file or an entire tree. These are implemented as “cheap copies” which act a bit like a link to the original in that they take up almost no space. Making a copy preserves the history of the item in the copy, so you can trace changes made before the copy was made.

To ‘tag’ a version , create a SVN folder and use ‘Copy’ to copy the snapshot to the new folder

Page 79: Subversion client

Glossary - Export

• This command produces a copy of a versioned folder, just like a working copy, but without the local .svn folders.

Page 80: Subversion client

FSFS

• FS File system. A proprietary Subversion file system backend for repositories. Can be used on network shares. Default for 1.2 and newer repositories.

Page 81: Subversion client

Diff

• Shorthand for “Show Differences”. Very useful when you want to see exactly what changes have been made.

Page 82: Subversion client

HEAD revision

• The latest revision of a file or folder in the repository.

Page 83: Subversion client

Glossary - Patch

• If a working copy has changes to text files only, it is possible to use Subversion's Diff command to generate a single file summary of those changes in Unified Diff format. A file of this type is often referred to as a “Patch”, and it can be emailed to someone else (or to a mailing list) and applied to another working copy. Someone without commit access can make changes and submit a patch file for an authorized committer to apply. Or if you are unsure about a change you can submit a patch for others to review.

Page 84: Subversion client

Glossary - Merge

– The process by which changes from the repository are added to your working copy without disrupting any changes you have already made locally. Sometimes these changes cannot be reconciled automatically and the working copy is said to be in conflict.

– Merging happens automatically when you update your working copy. You can also merge specific changes from another branch using TortoiseSVN's Merge command.

Page 85: Subversion client

Glossary - Switch

• Just as “Update-to-revision” changes the time window of a working copy to look at a different point in history, so “Switch” changes the space window of a working copy so that it points to a different part of the repository. It is particularly useful when working on trunk and branches where only a few files differ. You can switch your working copy between the two and only the changed files will be transferred.

Page 86: Subversion client

Glossary - Update

• This Subversion command pulls down the latest changes from the repository into your working copy, merging any changes made by others with local changes in the working copy

Page 87: Subversion client

Glossary – Working Copy

• This is your local “sandbox”, the area where you work on the versioned files, and it normally resides on your local hard disk. You create a working copy by doing a “Checkout” from a repository, and you feed your changes back into the repository using “Commit”.

Page 88: Subversion client

Glossary - Property

• In addition to versioning your directories and files, Subversion allows you to add versioned metadata - referred to as “properties” to each of your versioned directories and files. Each property has a name and a value, rather like a registry key. Subversion has some special properties which it uses internally, such as svn:eol-style. TortoiseSVN has some too, such as tsvn:logminsize. You can add your own properties with any name and value you choose

Page 89: Subversion client

Glossary - Import

• Subversion command to import an entire folder hierarchy into the repository in a single revision

Page 90: Subversion client

Glossary - Relocate

• If your repository moves, perhaps because you have moved it to a different directory on your server, or the server domain name has changed, you need to “relocate” your working copy so that its repository URLs point to the new location.

• Note: you should only use this command if your working copy is referring to the same location in the same repository, but the repository itself has moved. In any other circumstance you probably need the “Switch” command instead.

Page 91: Subversion client

Glossary - Revision

• Every time you commit a set of changes, you create one new “revision” in the repository. Each revision represents the state of the repository tree at a certain point in its history. If you want to go back in time you can examine the repository as it was at revision N.

Page 92: Subversion client

Glossary - Lock

• When you take out a lock on a versioned item, you mark it in the repository as un-committable, except from the working copy where the lock was taken out.

Page 93: Subversion client

Glossary - Cleanup

• To quote from the Subversion book: “ Recursively clean up the working copy, removing locks and resuming unfinished operations. If you ever get a working copy locked error, run this command to remove stale locks and get your working copy into a usable state again. ” Note that in this context “lock” refers to local file system locking, not repository locking.

Page 94: Subversion client

Integration with Bug Tracking

• To tag each commit to a Bug ID, you can set one these one of these properties while configuring Subversion :-

• bugtraq:url : Set this property to the url of your bugtracking tool. It must be properly URI encoded and it has to contain %BUGID%

• http://issues.tortoisesvn.net/?do=details&id=%BUGID%

Page 95: Subversion client

Integration with bug tracking

• bugtraq:warnifnoissue

• Set this to true, if you want TortoiseSVN to warn you because of an empty issuenumber textfield. Valid values are true/false. If not defined, false is assumed.

Page 96: Subversion client

Integration with Bug Tracking

• bugtraq:logregex • This property activates the Bugtracking

System in Regex mode. It contains one or two regular expressions, separated by a newline

• If only one expression is set, then the bare bug ID's must be matched in the groups of the regex string. Example: [Ii]ssue(?:s)? #?(\d+)

Page 97: Subversion client

Tools to integrate with VS.NET

• AnkhSVN

• VisualSVN