Smartsvn Manual

Download as pdf or txt
Download as pdf or txt
You are on page 1of 143

SmartSVN 7 Manual

WANdisco plc, www.wandisco.com 2012

Contents
1 Introduction 2 Project Window 2.1 User Interface . . . . . . . . . . . 2.2 Perspectives . . . . . . . . . . . . 2.3 Projects . . . . . . . . . . . . . . 2.4 Directory Tree and File Table . . 2.4.1 Directory States/Directory 2.4.2 File States/File Table . . 2.4.3 State Filters . . . . . . . . 2.4.4 Double Click . . . . . . . 2.4.5 Refresh . . . . . . . . . . 2.5 Menus . . . . . . . . . . . . . . . 2.5.1 Project . . . . . . . . . . . 2.5.2 Edit . . . . . . . . . . . . 2.5.3 View . . . . . . . . . . . . 2.5.4 Modify . . . . . . . . . . . 2.5.5 Change Set . . . . . . . . 2.5.6 Tag+Branch . . . . . . . . 2.5.7 Query . . . . . . . . . . . 2.5.8 Properties . . . . . . . . . 2.5.9 Locks . . . . . . . . . . . 2.5.10 Repository . . . . . . . . . 2.5.11 Tools . . . . . . . . . . . . 2.5.12 Window . . . . . . . . . . 2.5.13 Help . . . . . . . . . . . . 2.6 Changes View . . . . . . . . . . . 3 Commands 3.1 Check Out . . . . . . . 3.2 Import into Repository 3.3 Updating . . . . . . . 3.3.1 Update . . . . . 3.3.2 Update More . 3.3.3 Update Exclude 9 10 10 10 11 11 11 11 12 12 13 13 14 14 15 16 17 17 17 18 18 19 19 19 21 22 29 29 31 32 32 32 33

. . . . . . . . . . . . Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . . 1

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

Contents 3.3.4 Switch . . . . . . . . . . . . . . . 3.3.5 Relocate . . . . . . . . . . . . . . Local Modications . . . . . . . . . . . . 3.4.1 Add . . . . . . . . . . . . . . . . 3.4.2 Remove . . . . . . . . . . . . . . 3.4.3 Ignore . . . . . . . . . . . . . . . 3.4.4 Delete Physically . . . . . . . . . 3.4.5 Create Directory . . . . . . . . . 3.4.6 Rename . . . . . . . . . . . . . . 3.4.7 Move . . . . . . . . . . . . . . . . 3.4.8 Detect Moves . . . . . . . . . . . 3.4.9 Copy . . . . . . . . . . . . . . . . 3.4.10 Copy From Repository . . . . . . 3.4.11 Copy To Repository . . . . . . . 3.4.12 Copy Within Repository . . . . . 3.4.13 Revert . . . . . . . . . . . . . . . 3.4.14 Mark Resolved . . . . . . . . . . 3.4.15 Mark Replaced . . . . . . . . . . 3.4.16 Clean Up . . . . . . . . . . . . . 3.4.17 Fix . . . . . . . . . . . . . . . . . 3.4.18 Validate Working Copy Metadata Commit . . . . . . . . . . . . . . . . . . Merging . . . . . . . . . . . . . . . . . . 3.6.1 Merge . . . . . . . . . . . . . . . 3.6.2 Merge from 2 Sources . . . . . . . 3.6.3 Reintegrate Merge . . . . . . . . 3.6.4 Apply Patch . . . . . . . . . . . . Properties . . . . . . . . . . . . . . . . . 3.7.1 Edit Properties . . . . . . . . . . 3.7.2 Set or Delete Property . . . . . . 3.7.3 MIME-Type . . . . . . . . . . . . 3.7.4 EOL-Style . . . . . . . . . . . . . 3.7.5 Keyword Substitution . . . . . . 3.7.6 Executable-Property . . . . . . . 3.7.7 Externals . . . . . . . . . . . . . 3.7.8 Ignore Patterns . . . . . . . . . . 3.7.9 Bugtraq-Properties . . . . . . . . 3.7.10 Merge Info . . . . . . . . . . . . . Tags and Branches . . . . . . . . . . . . 3.8.1 Tag-Branch-Layout . . . . . . . . 3.8.2 Add Tag . . . . . . . . . . . . . . 3.8.3 Tag Multiple Project Roots . . . 3.8.4 Add Branch . . . . . . . . . . . . 3.8.5 Tag Browser . . . . . . . . . . . . 3.8.6 Congure Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 33 33 34 34 34 35 35 35 35 36 36 37 37 38 38 39 40 40 41 41 44 45 46 47 47 47 48 48 48 49 49 49 49 50 50 51 51 52 53 54 54 54 54 2

3.4

3.5 3.6

3.7

3.8

c 2012 WANdisco plc, www.wandisco.com

Contents 3.9 Queries . . . . . . . . . . . . . . . . . . 3.9.1 Show Changes . . . . . . . . . . 3.9.2 Compare with HEAD . . . . . . 3.9.3 Compare with HEAD . . . . . . 3.9.4 Compare with Revision . . . . . 3.9.5 Compare 2 Files . . . . . . . . . 3.9.6 Compare Repository Directories 3.9.7 Log . . . . . . . . . . . . . . . . 3.9.8 Revision Graph . . . . . . . . . 3.9.9 Annotate . . . . . . . . . . . . 3.9.10 Create Patch . . . . . . . . . . 3.9.11 Create Patch between URLs . . Locks . . . . . . . . . . . . . . . . . . . 3.10.1 Scan Repository . . . . . . . . . 3.10.2 Lock . . . . . . . . . . . . . . . 3.10.3 Unlock . . . . . . . . . . . . . . 3.10.4 Show Info . . . . . . . . . . . . 3.10.5 Change Needs Lock . . . . . . Remote State . . . . . . . . . . . . . . 3.11.1 Refresh Remote State . . . . . 3.11.2 Clear Remote State . . . . . . . Change Sets . . . . . . . . . . . . . . . 3.12.1 Move to Change Set . . . . . . 3.12.2 Move Up . . . . . . . . . . . . . 3.12.3 Move Down . . . . . . . . . . . 3.12.4 Delete . . . . . . . . . . . . . . 3.12.5 Edit Properties . . . . . . . . . Tools . . . . . . . . . . . . . . . . . . . 3.13.1 Export Backup . . . . . . . . . 3.13.2 Conict Solver . . . . . . . . . 3.13.3 Set Up Local Repository . . . . Common Features . . . . . . . . . . . . 3.14.1 Recursive/Depth options . . . . 3.14.2 Revision input elds . . . . . . 3.14.3 Repository path input elds . . 3.14.4 Tag input elds . . . . . . . . . 3.14.5 File/directory input elds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 55 55 55 55 56 56 56 57 58 58 59 59 59 60 60 60 60 60 61 61 61 62 63 63 63 63 63 63 64 64 64 65 65 66 66 66 67 67 68 69 69 69 69 3

3.10

3.11

3.12

3.13

3.14

4 Repository Browser 4.1 Repository menu . . . . 4.2 Edit menu . . . . . . . . 4.3 View . . . . . . . . . . . 4.4 Modify . . . . . . . . . . 4.4.1 Create Directory 4.4.2 Remove . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

c 2012 WANdisco plc, www.wandisco.com

Contents 4.4.3 Copy/Move Query menu . . . . Window menu . . . Help menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 70 70 70 71 71 72 72 73 73 73 74 74 74 75 75 75 75 75 76 76 77 77 78 78 79 81 81 81 81 83 83 84 84 84 85 85 87

4.5 4.6 4.7

5 Transactions 5.1 Transactions frame . . . . . . 5.1.1 Grouping of revisions . 5.1.2 Watched URLs . . . . 5.1.3 Read/Unread revisions 5.1.4 Display Settings . . . . 5.1.5 Transaction menu . . . 5.1.6 Edit menu . . . . . . . 5.1.7 View menu . . . . . . 5.1.8 Modify menu . . . . . 5.1.9 Query menu . . . . . . 5.1.10 Repository menu . . . 5.1.11 Window menu . . . . . 5.1.12 Help menu . . . . . . . 5.2 Project Transactions . . . . . 5.2.1 Settings . . . . . . . . 5.3 Log Cache . . . . . . . . . . . 5.3.1 Manage Log Caches . . 5.3.2 Storage . . . . . . . . 6 Repository Proles 6.1 Proles . . . . . . 6.1.1 Add . . . 6.1.2 Edit . . . 6.2 Proxies . . . . . . 6.3 Tunnels . . . . . 6.4 Passwords . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

7 Projects 7.1 Managing working copies . 7.2 Project Manager . . . . . 7.3 Project Settings . . . . . . 7.3.1 Text File Encoding 7.3.2 Refresh/Scan . . . 7.3.3 Working Copy . . . 7.3.4 Default Settings . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

8 Subwindows 88 8.1 Text Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.1.1 Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.1.2 File menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 c 2012 WANdisco plc, www.wandisco.com 4

Contents 8.1.3 Edit menu . . . . . . . . 8.1.4 View menu . . . . . . . 8.1.5 Go To menu . . . . . . . 8.1.6 Window menu . . . . . . File Compare . . . . . . . . . . 8.2.1 Comparison . . . . . . . 8.2.2 Settings . . . . . . . . . 8.2.3 File menu . . . . . . . . 8.2.4 Edit menu . . . . . . . . 8.2.5 View menu . . . . . . . 8.2.6 Go To menu . . . . . . . 8.2.7 Window menu . . . . . . Properties Compare . . . . . . . 8.3.1 File menu . . . . . . . . 8.3.2 Edit menu . . . . . . . . 8.3.3 Window menu . . . . . . Compare Repository Directories 8.4.1 Compare menu . . . . . 8.4.2 Edit menu . . . . . . . . 8.4.3 View menu . . . . . . . 8.4.4 Window menu . . . . . . Conict Solver . . . . . . . . . . 8.5.1 File menu . . . . . . . . 8.5.2 Edit menu . . . . . . . . 8.5.3 View menu . . . . . . . 8.5.4 Go To menu . . . . . . . 8.5.5 Window menu . . . . . . Revision Compare . . . . . . . . 8.6.1 File menu . . . . . . . . 8.6.2 Edit menu . . . . . . . . 8.6.3 View menu . . . . . . . 8.6.4 Go To menu . . . . . . . 8.6.5 Window menu . . . . . . Log . . . . . . . . . . . . . . . . 8.7.1 Log menu . . . . . . . . 8.7.2 Edit menu . . . . . . . . 8.7.3 View menu . . . . . . . 8.7.4 Modify menu . . . . . . 8.7.5 Query menu . . . . . . . 8.7.6 Window menu . . . . . . 8.7.7 File Export . . . . . . . Revision Graph . . . . . . . . . 8.8.1 Merge Information . . . 8.8.2 Search . . . . . . . . . . 8.8.3 Branch Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 89 89 89 89 89 90 90 90 91 91 91 91 92 92 92 92 92 92 92 93 93 93 93 93 94 94 94 94 94 95 95 95 95 96 96 97 97 97 98 98 98 99 100 100 5

8.2

8.3

8.4

8.5

8.6

8.7

8.8

c 2012 WANdisco plc, www.wandisco.com

Contents 8.8.4 Graph menu . . 8.8.5 Edit menu . . . 8.8.6 View menu . . 8.8.7 Modify menu . 8.8.8 Query menu . . 8.8.9 Window menu . 8.9 Annotate . . . . . . . . 8.9.1 Annotate menu 8.9.2 Edit menu . . . 8.9.3 View menu . . 8.9.4 Revision menu 8.9.5 Go To menu . . 8.9.6 Window menu . 8.10 Merge Preview . . . . 8.10.1 Merge menu . . 8.10.2 Edit menu . . . 8.10.3 View menu . . 8.10.4 Window menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 101 101 102 102 102 102 103 103 103 103 103 103 104 104 104 104 104

9 Preferences 9.1 On Start-Up . . . . . . . . . . . . . . . . . . 9.2 Project . . . . . . . . . . . . . . . . . . . . . 9.3 User Interface . . . . . . . . . . . . . . . . . 9.4 Commit . . . . . . . . . . . . . . . . . . . . 9.5 Conict Solver . . . . . . . . . . . . . . . . . 9.6 Open . . . . . . . . . . . . . . . . . . . . . . 9.7 Refresh . . . . . . . . . . . . . . . . . . . . . 9.8 Revision Graph . . . . . . . . . . . . . . . . 9.9 Built-in Text Editors . . . . . . . . . . . . . 9.10 File Comparators . . . . . . . . . . . . . . . 9.10.1 External Comparators . . . . . . . . 9.10.2 External Viewers . . . . . . . . . . . 9.11 External Tools . . . . . . . . . . . . . . . . . 9.11.1 Directory Command . . . . . . . . . 9.12 Transactions . . . . . . . . . . . . . . . . . . 9.13 Spell Checker . . . . . . . . . . . . . . . . . 9.14 Shell Integration (Windows) . . . . . . . . . 9.14.1 Status Cache . . . . . . . . . . . . . 9.15 Shell Integration (Mac OS) . . . . . . . . . . 9.16 Check for Update . . . . . . . . . . . . . . . 9.17 Customize . . . . . . . . . . . . . . . . . . . 9.17.1 Accelerators . . . . . . . . . . . . . . 9.17.2 Context Menus (not always available) 9.17.3 Toolbar (not always available) . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

105 . 105 . 105 . 105 . 106 . 107 . 107 . 108 . 109 . 109 . 109 . 109 . 110 . 110 . 110 . 111 . 111 . 112 . 112 . 112 . 113 . 113 . 113 . 113 . 114

c 2012 WANdisco plc, www.wandisco.com

Contents 10 Shell Integration 10.1 Commands (Windows and OS X 10.5) 10.2 Commands (OS X 10.6) . . . . . . . . 10.3 Output Window . . . . . . . . . . . . . 10.3.1 File menu . . . . . . . . . . . . 10.3.2 Edit menu . . . . . . . . . . . . 10.3.3 Window menu . . . . . . . . . . 10.4 Overlay Icons . . . . . . . . . . . . . . 10.5 Server Mode . . . . . . . . . . . . . . . 10.6 Windows Shell Integration . . . . . . . 10.7 Mac OS X Finder integration . . . . . 10.8 Tray Icon . . . . . . . . . . . . . . . . 10.9 Status Cache . . . . . . . . . . . . . . 11 Plugins 11.1 JIRA Plugin . . . . . . . . . 11.1.1 Workow . . . . . . 11.1.2 Requirements . . . . 11.2 Trac Plugin . . . . . . . . . 11.2.1 Workow . . . . . . 11.2.2 Requirements . . . . 11.3 Remove Empty Directories . 11.4 Quick Update . . . . . . . . 11.5 Plugin-API . . . . . . . . . 11.6 Send Support Email . . . . 11.7 Hide Menu Items . . . . . . 11.8 Merge Info Column . . . . . 11.9 Tag Multiple . . . . . . . . 11.10Commit Message Templates 115 115 115 116 116 116 116 116 117 117 118 118 119

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

121 . 121 . 121 . 122 . 122 . 122 . 123 . 123 . 124 . 124 . 124 . 124 . 124 . 125 . 125 126 . 126 . 126 . 127 . 128 . 128 129 . 129 . 129 . 131 . 133 . 134 . 135 . 136

12 Installation and Files 12.1 Location of SmartSVNs settings directory 12.2 Notable conguration les . . . . . . . . . 12.3 Company-wide installation . . . . . . . . . 12.4 Command line arguments . . . . . . . . . 12.5 JRE search order (Windows) . . . . . . . . 13 System properties/VM options 13.1 General properties . . . . . . 13.2 SVN properties . . . . . . . . 13.3 User interface properties . . . 13.4 Transaction-related properties 13.5 JIRA plugin properties . . . . 13.6 Trac plugin properties . . . . 13.7 Other properties . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

c 2012 WANdisco plc, www.wandisco.com

Contents 13.8 Specifying VM options and system properties . . . . . . . . . . . . . . . . 137 14 xMerge add-on 14.1 Introduction . . . . 14.2 A sample use-case . 14.3 User Interface . . . 14.4 Known Limitations 139 . 139 . 139 . 140 . 142

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

c 2012 WANdisco plc, www.wandisco.com

Chapter 1 Introduction
SmartSVN is a graphical Subversion (SVN) client. Its target audience are users who need to manage a number of related les in a directory structure, to control access in a multi-user environment and to track changes to the les and directories. Typical areas of application are software projects, documentation projects and website projects.

Acknowledgments
We want to thank all users who have participated in the Early Access/Beta Program of SmartSVN and in this way helped to improve it by reporting bugs and suggesting features. Special thanks go to the SVNKit developers (http://www.svnkit.com) who provide the excellent Subversion base library SVNKit on which SmartSVN has been built, and to the whole SVN developer community at subversion.apache.org for making Subversion the most powerful version control system available today.

Chapter 2 Project Window


The Project Window is the central place for working with SmartSVN. In the center of the window, the main Directories and Files view show the SVN le system of your currently opened project (working copy). Various SVN commands on these directories and les are provided by the menu bar and the toolbar.

2.1

User Interface

In the bottom left area of the Project Window the Output view shows logged output from executed SVN commands. Depending on the command, there can be several SVN operations available for the logged les and directories. In the bottom right the Transactions view (Section 5.2) collects and displays log information from the repository. The Changes view (Section 2.6) shows the local modications of the currently selected le. Always exactly one of the aforementioned views is active, which is displayed by its highlighted title. We will also refer to the active view as the view which has the focus. Menu bar actions (as well as toolbar buttons) are always referring to the currently active view. At the very bottom of the Project Window is the status bar, displaying various kinds of information. The rst and largest section of the status bar contains information on the currently selected menu item, operation progress or the repository URL of the currently selected le/directory. The second section displays information on your current selection from the Directories or the Files frame, or no information if neither of these views is active. The third section displays information on the Refresh state (see 2.4.5) of the project and the fourth section is used for progress display during the execution of SVN operations. It may either show the percentage of completion of an operation, or the total amount of bytes sent and received during the operation.

2.2

Perspectives

The layout of the Project Window can be arranged with the mouse by dragging the splitters between the various views. By dragging their titles, they can be undocked from 10

Chapter 2. Project Window one position and docked to another position. Views provide toolbar buttons to maximize, minimize and auto-hide them. A complete layout conguration is called a Perspective. There are two perspectives available: the Main Perspective and the Review Perspective. The Main Perspective is primarily intended for giving you an overview of your project and repository state (Transactions). The Review Perspective is intended for reviewing le content changes, especially before committing them. Both perspectives can be re-congured to your needs and you may switch between them in the Window menu. Use Reset to Default to reset the currently selected perspective to its default layout.

2.3

Projects

SmartSVN internally manages your SVN working copies in SmartSVN projects, as described in Section 7. One Project Window shows one project at a time. To work with multiple projects at the same time, you can open multiple Project Windows by clicking Window|New Project Window. Already existing projects can be opened in a Project Window by Open or closed by Close.

2.4

Directory Tree and File Table

The directory tree and the le table show the local directories/les below the projects root directory. .svn-directories, ignored directories and les within other ignored directories are not displayed.

2.4.1

Directory States/Directory Tree

The directory tree shows the projects directories and their SVN states, which are denoted by dierent icons. The primary directory states are listed in Table 2.1. Every primary state may be combined with additional states listed in Table 2.2. In case of a versioned directory, the corresponding revision number is displayed after the name of the directory. The revision will be omitted if its equal to its parent directory revision. If the directory hasnt been checked out with depth Fully recursive (see 3.14.1), the check out depth will be displayed in parantheses, too. The tooltip shows detailed SVN information for the corresponding directory, similar to the contents of the le table, see below. To speed search the directory tree for a certain directory, click into the tree (so the Directories view becomes active) and start typing the directory name. This will make a small popup come up, which displays the characters you have already entered. Wildcard symbols * and % can be used with the usual meaning.

2.4.2

File States/File Table

The le table shows the projects les with their SVN states and various additional information. The primary le states are listed in Table 2.5 and Table 2.6. Every primary c 2012 WANdisco plc, www.wandisco.com 11

Chapter 2. Project Window state may be combined with additional states listed in Table 2.7. The rest of this section explains conguration options for the le table. They are always related only to the current project and are also stored with the current project. File Attributes Tip Certain table columns require access to additional le system les when scanning the le system and therefore slow down scanning. The note within the View|Table Columns dialog tells you which columns these are.

Name Filters The toolbar of the le table contains the Filter input eld, which can be used to restrict the displayed les to a certain le name pattern. By default, simple patterns, including the wildcard symbols * and %, are supported. You can also use ! at the beginning of a pattern to invert it. For example, !*.txt will show all les which dont have the .txt extension. From the attached drop-down menu you can reset the lter with Show All, which simply clears the Filter eld. You can also select Regular Expressions instead of simple patterns. For details on the supported regular expression constructs refer to http: //java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html. With Save Pattern you can save a pattern. Once a pattern is saved it will be displayed in the top of the drop-down menu. It can be used by selecting it and removed again by Remove Pattern. Similar to the directory tree, the speed search is also available for the le table.

2.4.3

State Filters

With the menu items in the View menu, you can also set lters to display only les which meet certain criteria. Refer to the View menu (see 2.5.3) for details. By default, these le lters will also be applied on the directories. You can change this behaviour in the Preferences (see 9.3) by Use View-menu le lters also for directories.

2.4.4

Double Click

By default, if you double-click on a le in the le table, the le will be opened in one of several ways, depending on its le state: For an unchanged le which is remotely changed (see Section 3.11), the Compare with HEAD (see 3.9.2) command is invoked. An unchanged, unversioned or added le is opened with the le editor, see the Edit|Open command (Section 2.5.2) for further details. A conicting le is opened with the Conict Solver (Section 8.5).

c 2012 WANdisco plc, www.wandisco.com

12

Chapter 2. Project Window All other les are opened by comparing them (Section 3.9.1). If, for example, you want to always open (Section 2.5.2) the le independent of its state by double-clicking it, assign the <Enter>-keystroke accelerator (Section 9.17.1) to the Query|Open menu item.

2.4.5

Refresh

The contents of the directory tree and the le table are initialized when a project is opened by reading at least the contents of the root directory into memory. Whether the complete project shall also be read into memory at project startup or not can be congured in the project settings (Section 7.3). The scanning and refreshing of the projects directories and les is in general performed in the background, so you can immediately start to work after opening a project and you may continue to work while the project is refreshed. If a Refresh is currently in progress, the status bar shows a Refreshing text and symbol. The scanning is performed breadth-rst, so you will immediately have the complete root directory refreshed. When scanning a large working copy, you can force SmartSVN to give certain subdirectories higher priority in being scanned: Just select the (already scanned) directory in the Directories tree you would like to have scanned recursively as soon as possible. SmartSVN will then reorganize its breadth-rst strategy accordingly. The same holds true for le selections: SmartSVN will give priority in scanning their common parent directory (and the path up to the root). When changes to known (i.e. in memory) les or directories occur from within SmartSVN, they are refreshed automatically. In case of external changes, an explicit refresh via View|Refresh or by the corresponding toolbar button is required. You can congure the kind of refresh (depth) within the application preferences (Section 9.7). Tip The initial scanning/refresh is in general much slower than subsequent refreshes due to the system disk cache. On Windows, you can enable the Status Cache (see 10.9) to get a rst preview of your working copy quickly. This preview also allows to perform most of the commands, so you can start certain SVN operations even before the le system has been scanned.

2.5

Menus

This section summarizes actions which are available from the various Project Window menus. Note You may use the Hide Menu Items plugin (see 11.7) to remove certain menu items from the menu.

c 2012 WANdisco plc, www.wandisco.com

13

Chapter 2. Project Window

2.5.1

Project

Check Out, see Section 3.1. Open Working Copy, see Section 7. Edit Working Copy, see Section 7. Remove Working Copy, see Section 7. Import into Repository, see Section 3.2. Open, see Section 7. Close, see Section 7. Project Manager, see Section 7.2. Settings, see Section 7.3. Default Settings, see Section 7.3. Exit exits SmartSVN.

2.5.2

Edit

Stop stops the currently running operation. Depending on the type of operation, this action might not be applicable. On the other hand, while an operation is running, most of the other actions are not applicable. Reveal in Finder (Mac OS only) brings the Finder process to front and selects the currently selected le/directory. File Filter positions the cursor in the le tables lter eld. Select Committable Files selects all committable les in the le table. Because SmartSVN allows to automatically add unversioned or remove missing les for a commit, such les are also selected. Select Directory selects the deepest common directory for all selected les in the le table. Select in Project selects the currently selected les/directories from the Transactions (see 5.2) view or the Output area in the le table/directory tree. Copy Name copies the name of the selected le/directory to the system clipboard. If multiple les are selected, all names will be copied, each on a new line. Copy Path copies the path of the selected le/directory to the system clipboard. If multiple les are selected, all paths will be copied, each on a new line.

c 2012 WANdisco plc, www.wandisco.com

14

Chapter 2. Project Window Copy Relative Path copies the path of the selected le/directory relative to the project root directory to the system clipboard. If multiple les are selected, all paths will be copied, each on a new line. Copy URL copies the repository URL of the selected le/directory to the system clipboard. If multiple les are selected, all URLs will be copied, each on a new line. Copy Message copies the message of the currently selected revision in the Transactions (see 5.2) view. If multiple revisions are selected, all messages will be copied, each on a new line. Use Customize to customize accelerators, context menus and the toolbar (see Section 9.17). Preferences shows the application preferences (see Section 9).

2.5.3

View

Table Columns lets you specify which le attributes will be displayed in the le table, see Table 2.3 and Table 2.4. Also, the order of the table columns can be dened here, alternatively to rearranging them directly in the le table. Select Make this conguration the default to have the selected conguration applied to every new project. Use Reset to reset the table column layout to the default. Refresh, see Section 2.4.5. Files From Subdirectories enables the recursive view showing not only les from the currently selected directory but also those from subdirectories. With Unchanged Files unchanged les are displayed. It is sometimes convenient to hide them, as they dont matter for most of the SVN commands. With Unversioned Files unversioned les (also within unversioned directories) are displayed. Note Unversioned Files option does in no way aect the unversioned les itself or their SVN state. Certain operations, which can work on unversioned les, will consider them anyway. Parent directories of unversioned les will continue to display Direct/Indirect Local Changes state. To actually ignore such les on the SVN-level you can use the Ignore command (see 3.4.3).

With Ignored Files ignored les within versioned directories will be displayed. Files from ignored directories are never displayed. With Files Assigned to Change Set selected, les which are already assigned to a Change Set (see 3.12) will be displayed. Otherwise, those le will not be displayed, to give a better overview on which les are not yet assigned to Change Sets. This option has no eect if the selected directory is a Change Set itself or part of a Change Set. c 2012 WANdisco plc, www.wandisco.com 15

Chapter 2. Project Window With Remote Changed Files selected, les will be displayed which are remotely changed (see Table 3.3). Typically, this option has no eect when Unchanged Files is selected, because these les are shown anyway. An exception here are les which only exist remotely, i.e. les which are in Remote state. Reset Layout will reset the Project Window layout (docking states).

2.5.4

Modify

Update, see Section 3.3.1. Update More, see Section 3.3.2. Switch, see Section 3.3.4. Relocate, see Section 3.3.5. Merge, see Section 3.6.1. Merge from 2 Sources, see Section 3.6.2. Reintegrate Merge, see Section 3.6.3. Apply Patch, see Section 3.6.4. Commit, see Section 3.5. Add, see Section 3.4.1. Remove, see Section 3.4.2. Ignore, see Section 3.4.3. Delete Physically, see Section 3.4.4. Create Directory, see Section 3.4.5. Rename, see Section 3.4.6. Move, see Section 3.4.7. Detect Moves, see Section 3.4.8. Copy, see Section 3.4.9. Copy From Repository, see Section 3.4.10. Copy To Repository, see Section 3.4.11. Copy Within Repository, see Section 3.4.12. Revert, see Section 3.4.13. c 2012 WANdisco plc, www.wandisco.com 16

Chapter 2. Project Window Mark Resolved, see Section 3.4.14. Mark Resolved, see Section 3.4.15. Clean Up, see Section 3.4.16. Fix, see Section 3.4.17. Validate Working Copy Metadata, see Section 3.4.18.

2.5.5

Change Set

Move to Change Set, see Section 3.12.1. Move Up, see Section 3.12.2. Move Down, see Section 3.12.3. Delete, see Section 3.12.4. Edit Properties, see Section 3.12.5.

2.5.6

Tag+Branch

Add Tag, see Section 3.8.2. Tag Multiple Project Roots, see Section 3.8.3. Add Branch, see Section 3.8.4. Tag Browser, see Section 3.8.5. Congure Layout, see Section 3.8.6.

2.5.7

Query

Open opens the selected les/directory. If the directory tree has the focus, this action will only work if a Directory Command has been congured in the preferences (see Section 9.11). If the le table has the focus the le(s) will be opened in an editor. The editor to be used to open a le can be congured in the Externals Tools section of the Preferences (see Section 9.11). If no editor is congured there, the internal File Editor (see 8.1) will be launched. For les, you can specify a limit on the le count beyond which you will be asked before the les are opened at once; for details refer to Section 9.6. Show Changes, see Section 3.9.1. Compare with HEAD, see Section 3.9.2. Compare with Previous, see Section 3.9.3. c 2012 WANdisco plc, www.wandisco.com 17

Chapter 2. Project Window Compare with Revision, see Section 3.9.4. Compare 2 Files, see Section 3.9.5. Compare Repository Directories, see Section 3.9.6. Log, see Section 3.9.7. Revision Graph, see Section 3.9.8. Annotate, see Section 3.9.9. Create Patch, see Section 3.9.10. Create Patch between URLs, see Section 3.9.11. Refresh Remote State, see Section 3.11.1. Clear Remote State, see Section 3.11.2.

2.5.8

Properties

Edit Properties, see Section 3.7.1. MIME-Type, see Section 3.7.3. EOL-Style, see Section 3.7.4. Keyword Substitution, see Section 3.7.5. Excutable-Property, see Section 3.7.6. Externals, see Section 3.7.7. Ignore Patterns, see Section 3.7.8. Bugtraq-Properties, see Section 3.7.9. Merge Info, see Section 3.7.10.

2.5.9

Locks

Refresh, see Section 3.10.1. Lock, see Section 3.10.2. Unlock, see Section 3.10.3. Show Info, see Section 3.10.4. Change Needs Lock, see Section 3.10.5.

c 2012 WANdisco plc, www.wandisco.com

18

Chapter 2. Project Window

2.5.10

Repository

Use Open in Repository Browser to open the selected directory/le in the Repository Browser (see 4). Manage Proles, see Section 6. Change Master Password, see Section 6.4. Set Up Local repository, see Section 3.13.3. Manage Log Caches, seeSection 5.3.1.

2.5.11

Tools

Export Backup, see Section 3.13.1. Conict Solver, see Section 3.13.2.

2.5.12

Window

New Project Window opens a new Project Window for working on another project. New Repository Browser opens a new Repository Browser (see 4). Show Transactions shows the standalone Transactions Frame (see 5.1). Directories puts the focus in the Directory tree (see 2.4). Files puts the focus in the File table (see 2.4). Output, see Section 2.5.12 Changes, see Section 2.5.12 Transactions, see Section 2.5.12 The subsequent content of the Window menu depends on which windows are currently open. For each window, there is a menu item to switch to it. Output The Output-menu contains commands related to the Output view (see 2.1): Use Activate to display and put the focus to the Output window. Use Clear to clear the Output view. If there are multiple command outputs, the latest (topmost) command output will be kept. If there is only one command output, it will be removed. Commands that are currently in progress cant be cleared.

c 2012 WANdisco plc, www.wandisco.com

19

Chapter 2. Project Window Changes The Changes-menu contains commands related to the Changes view (see 2.1): Use Activate to display and put the focus to the Changes window. Use Reload to refresh the le contents from the le system and recalculate the dierences. Use Previous Change to navigate to the previous change within the currently selected le. If there is no previous change, SmartSVN will select the last change of the previous le (as displayed in the le table). Use Next Change to navigate to the next change within the currently selected le. If there is no next change, SmartSVN will select the rst change of the next le (as displayed in the le table). For Ignore Whitespace for Line Comparison, refer to Section 8.2.2. For Ignore Case Change for Line Comparison, refer to Section 8.2.2. For Settings, refer to Section 8.2.2. Transactions The Transactions-menu contains commands related to the Transactions view (see 5.2). Use Activate to display and put the focus to the Transactions window. Refresh, see Section 5.1.5. Mark as Read, see Section 5.1.7. Mark All as Read, see Section 5.1.7. Select Show Branches and Tags to display not only the working copy revisions but also revisions of the trunk, branches and tags. Refer to Section 5.1.2 for details. Select Show Additional Watched URLs to display not only the working copy revisions but also revisions which have explicitly been congured to be watched by Congure Watched URLs. Ungrouped Revisions, see Section 5.1.1. Grouped by Weeks, see Section 5.1.1. Grouped by Time, see Section 5.1.1. Grouped by Author, see Section 5.1.1. Grouped by Location, see Section 5.1.1. c 2012 WANdisco plc, www.wandisco.com 20

Chapter 2. Project Window Use Merge to merge the selected revision to your local working copy. If you want to congure advanced options for the merge, use the default Merge command (see 3.6.1). Rollback, see Section 8.7.4. Change Commit Message, see Section 8.7.4. Congure Watched URLs, see Section 5.1.2. Settings, see Section 5.2.1.

2.5.13

Help

Help Topics shows the online version of SmartSVNs help. Contact Support opens your email client to send a message to [email protected]. This functionality is provided by the Send Support Email (see 11.6) plugin. Register switches to the Professional edition. License Information shows information on your SmartSVN license and the licensing conditions for SmartSVN. Reset Deactivated Warnings will bring for future actions/operations those warnings again which had been deactivated. Enable Connection Logging can be used to trace and analyze problems when working with SmartSVN. The dialog will give you further instructions on how to use Connection Logging. Downgrade Working Copy can be used to downgrade the working copy format of the current project to Subversion 1.5 working copy format. A working copy downgrade should only be necessary if you are forced to continue working with pre-1.6 SVN clients. Use Obfuscate Log Cache to remove potentially condential information from a Log Cache so it can be sent to WANdisco PLC for debug purposes. Select the Cache to obfuscate, the Output File where the obfuscated cache should be stored and the Map File which contains the mapping between between real repository paths and obfuscated paths. Check for New Version connects to the SmartSVN website and checks, if there is a new version available for download. By default, this check is also performed when starting SmartSVN. You can congure the checking for new versions within the Preferences (see 9.16). About SmartSVN shows information on the current SmartSVN version.

c 2012 WANdisco plc, www.wandisco.com

21

Chapter 2. Project Window

2.6

Changes View

The Changes view displays local changes of the le currently selected in the le table. More precisely, it displays the dierences between the currently selected le, as found in the working copy, and the corresponding pristine copy of that le, as found in the repository. Tip The Review perspective (see 2.2) is intended to give enough space to the Changes view, so you can quickly review le content changes in detail.

c 2012 WANdisco plc, www.wandisco.com

22

Chapter 2. Project Window Icon State Unchanged Unversioned Ignored Modied Added Removed Replaced Copied History-Scheduled Missing Added-Missing Conict Incomplete Root Nested Root Obstructed Details Directory is under version control, not modied and equal to its revision in the repository (i.e. to its pristine copy). Directory is not under version control and hence only exists locally. Directory is not under version control (exists only locally) and is marked to be ignored. Directory itself is modied in its properties (compared to its revision in the repository, i.e. to its pristine copy.) Directory is scheduled for addition. Directory is scheduled for removal. Directory has been scheduled for removal and added again. Directory has been added with history. A parent directory has been added with history, which implicitly adds this directory with history. Directory is versioned, but does not exist locally. The directory has been scheduled for addition, but is locally missing. Refer to the Fix command (see 3.4.17). An updating command lead to conicting changes in directories properties. A previous update was not fully performed. Do an update again. Directory is either the project root or an external root. Directory is a nested working copy root, but no external. Refer to the Fix command (see 3.4.17). A le exists locally, but according to the pristine copy (i.e. the information from the repository) it should be a directory. Please backup the le, then remove it and update the directory from the repository. The directory does not locally exist nor is versioned anymore, but it is still present in the working copy metadata (.svn directory). Its probably part of a tree conict (see 3.4.14). Directory only exists in the repository. This state is only used for the remote state command (see Section 3.11). Directory has not been scanned yet (see Section 2.4.5). Figure 2.1: Primary Directory States c 2012 WANdisco plc, www.wandisco.com 23

Phantom

Remote Unscanned

Chapter 2. Project Window

Icon

State Switched Locked

Details Directory is switched (compared to its parent); see Section 3.3.4. Directory is locked locally because an operation has been interrupted before. A Cleanup (see 3.4.16) should x the problem. There are local changes to this directory itself. There are local changes to one of its les or to one of the subdirectories of this directory. There are remote changes to this directory itself, see Section 3.11. There are remote changes to one of its les or to one of the subdirectories of this directory, see Section 3.11. The directory is part of a tree-conict, see Section 3.4.14 for details. Figure 2.2: Additional Directory States

Direct Local Changes Indirect Local Changes Direct Remote Changes Indirect Remote Changes

Tree Conict

c 2012 WANdisco plc, www.wandisco.com

24

Chapter 2. Project Window

SmartSVN Name SVN info Name (same) Revision (same) Local State Schedule Lock Last Rev. Last Changed Text Updated

Props Updated

Last Author Type EOL Keyw. Needs Lock Executable Merge Info

Copy From

Description The les name Current revision of the le Textual representation of the local state of the le Lock Owner Lock state of the le (see Section 3.10) Last Changed Rev. Revision, where this le has been committed Last Changed Date Time of the last commit of the le Text Last Updated Time of the last (local) update of the les text; this attribute is set when the content of a le has been changed by an SVN command. Properties Last Updated Time of the last (local) update of the les properties; this attribute is set when the properties of a le have been changed by an SVN command. Last Changed Author Last author, i.e. who performed the last commit on the le svn:mime-type The les type (see Section 3.7.4) svn:eol-style End-Of-Line Type of the le (see Section 3.7.4) svn:keywords Keyword substitution options of the le (see Section 3.7.5) svn:needs-lock Whether the le should be locked before working (see Section 3.10.5) svn:executable Whether the le has the ExecutableProperty set (see Section 3.7.6) svn:mergeinfo Whether the le has the Merge InfoProperty set (see Section 3.7.10): None for no Merge Info set, Empty for an empty Merge Info or Present for nonempty Merge Info. Provided by the Merge Info Column plugin (see 11.8). Copy From URL/Rev Location and URL from which this le has been copied (locally). This value is only present if the le is in Copied state

Figure 2.3: File attributes with SVN counterparts

c 2012 WANdisco plc, www.wandisco.com

25

Chapter 2. Project Window

SmartSVN Name Remote State Ext. Relative Directory File Time Attrs. Size Branch Change Set

Description Remote state of the le (see Section 3.11) The les extension Parent directory of the le relative to the selected directory The local time of the le Local le attributes: R for read-only and H for hidden The local size of the le The tag/branch to which the le is currently switched (see 3.3.4). For details, refer to Section 3.8.1. The Change Set (see 3.12) to which the le belongs.

Figure 2.4: File attributes without SVN counterparts

c 2012 WANdisco plc, www.wandisco.com

26

Chapter 2. Project Window

Icon

State Unchanged

Details File is under version control, not modied and equal to its revision in the repository (i.e. to its pristine copy). Unversioned File is not under version control, but only exists locally. Ignored File is not under version control (exists only locally) and is marked to be ignored. Modied File is modied in its content but not properties (compared to its revision in the repository, i.e. to its pristine copy). Modied (properties only) File is modied in its properties but not content (compared to its revision in the repository, i.e. to its pristine copy). Modied (properties only) File is modied in its content and properties (compared to its revision in the repository, i.e. to its pristine copy). Missing File is under version control, but does not exist locally. Added File is scheduled for addition. Removed File is scheduled for removal. Replaced File has been scheduled for removal and added again. Copied File has been added with history. History-Scheduled A parent directory has been added with history, which implicitly adds this le with history. Remote File does not exist locally, but only in the repository. This state is only used for the remote state (see Section 3.11). Conict An updating command lead to conicting changes either in content or properties. Merged The le has been merged. Refer to the Merge command (see 3.6.1) for details. Figure 2.5: Common Primary File States

c 2012 WANdisco plc, www.wandisco.com

27

Chapter 2. Project Window

Icon

State Incomplete

Details A previous update was not fully performed. You should do an update again. Name conict There exists another le in the repository with the same name, only diering in upper/lower case. Such les cant be checked out on case-insensitive le systems. To x this problem corresponding les have to be renamed in the repository. Obstructed A directory exists locally, but according to the pristine copy (i.e. the information from the repository) it should be a le. Please backup contents of the directory, then remove it and update the le from the repository. Inaccessible The les content is not accessible, hence its state (modication) cant be determined. Its probably locked by another application. Phantom The le does not locally exist nor is versioned anymore, but it is still present in the working copy metadata (.svn directory). Its probably part of a tree conict (see 3.4.14). Case-Changed The case of the le name has changed on an operating system, which is case-insensitive regarding le names. Refer to the Fix command (see 3.4.17) on how to handle such les. Figure 2.6: Rare Primary File States

Icon

State Switched

Details File is switched (compared to its parent directory); see Section 3.3.4. Locked (Self) The le is locked in the repository by yourself (or more specifically, it is locked for the current working copy). See Section 3.10. Locked (Other) The le is locked in the repository by some other user, see Section 3.10. Lock Necessary The le needs to be locked before starting to work, see Section 3.10.5. Tree Conict The le is part of a tree-conict, see Section 3.4.14 for details. Figure 2.7: Additional File States

c 2012 WANdisco plc, www.wandisco.com

28

Chapter 3 Commands
SmartSVN provides most of the SVN command line commands in a standalone version, but also combines them into powerful higher-level commands. Common enhancements that are available for several of the following commands are explained in Section 3.14.

3.1

Check Out

Use Project|Check Out to create a working copy from a project which is already under SVN control.

Page Repository
If you are going to frequently check out from a repository you may perform a Detailed Checkout. First you need to select the repository from which you want to check out a project. If you cant nd the Repository Prole, click the Manage button to add it, see Section 6 for details. The Quick Checkout is similar to the command line version of checkout: Simply enter the URL of the project you want to check out and specify the Local Directory to check out to. The subsequently described steps are skipped, when using the Quick Checkout. Click Next to continue.

Page Location
After switching to this page, the repository will be scanned. A few moments later youll see the root content of the repository. Expand the tree nodes to scan into the repository structure. For details refer to Section 4. Use Show Revision to dene the revision of your selected directory that you want to check out. Please note that the repository contents might change when changing the revision. Select the repository directory you want to check out and click Next. When working with trunk, tags and branches its not recommended to check out the whole project, because due to the increasing number of tags the working copy (not the repository) would be growing quickly, over time accumulating a lot of unneeded les on 29

Chapter 3. Commands your disk. Instead you should check out only trunk or a certain tag or branch and if necessary switch (see 3.3.4) to another location. SmartSVN tries to detect whether you are going to check out a whole project instead of a single trunk/branch and will warn you accordingly. Sometimes you wont need to check out the complete trunk/branch of a project, but only a certain sub-directory. Certain features (such as tags) wont work on sub-directories, hence SmartSVN will ask you whether to check out necessary parent directory nonrecursively. Such non-recursive check outs (also called sparse checkouts) are ecient and recommended in a situation like this.

Page Local Directory


At this page you can select the local directory into which the working copy should be checked out. Use the options to dene how the directory name should be created. The Checkout Directory depends on these options and always shows the nal directory into which the checkout will occur (i.e. where the root .svn- directory will be created). When deselecting Check out recursively, you will only check out the selected repository directory itself, but no subdirectories. Later you may choose to check out certain subdirectories with Update More (see 3.3.2). Non-recusive checkouts can be useful here, if you wish to skip certain modules of a project. Click Next to proceed.

Page Project
At this page you can select whether to check out a working copy, i.e. create the necessary .svn/ structure or to simply Export the les from the repository. With Check out a working copy, SmartSVN will create a working copy for your check out source. In this case you may select to Add a new project for this working copy, specify the projects name and specify an optional group (Project Manager (see 7.2)) to which the project will be added. You may select Add to current project to add the working copy to the currently open project (if present). Or you may select Dont manage as project to just create a temporary project for this working copy. With Export only, SmartSVN will just export the les from repository without creating the .svn/ subdirectory, meaning you wont be able to perform the usual SVN commands on these exported directories and les. In this case, when selecting Overwrite locally existing les, locally existing les will be overwritten if necessary, otherwise the export will be cancelled. You may specify the desired line ending markers with Use EOL. Click Next to proceed.

Page Summary
Use this page to review your choices. Click Back to change them or Finish to start the checkout.

c 2012 WANdisco plc, www.wandisco.com

30

Chapter 3. Commands

3.2

Import into Repository

Use Project|Import into Repository to add an unversioned local directory to the repository and to create the corresponding SmartSVN project. Only the specied directory will be put under version control using this command. Use the Add (see 3.4.1) and Commit (see 3.5) commands to import other les and directories of the project individually into the repository.

Page Local Directory


Select the unversioned Directory which you want to import into the repository.

Page Repository
Choose the Repository into which you want to import. If the Repository Prole does not exist yet, click the Manage button to add it.

Page Location
After switching to this page, it takes a few moments until the repository is scanned. You can now scan into the repository by expanding the directory nodes, for more details refer to Section 4. Use the Create Directory tool button to create new directories in the repository. Note You can create directories recursively in one go, by specifying the directories separated by /. This helps to avoid cluttering up the Log, as only one revision for creating all of these nested directories will show up.

After youve created the necessary directory structure in the repository, select the directory that should be linked with the root of your local project and click Next.

Page Project
On this page you can congure to which project the imported working copy will be added. You may select to Add a new project for this working copy, specify the projects name and specify an optional group (see Project Manager (see 7.2)) to which the project will be added. You may select Add to current project to add the working copy to the currently open project (if present). Or you may select Dont manage as project to just create a temporary project for this working copy.

Page Summary
Use this page to review your import settings. Click Back to change them or Import to start importing.

c 2012 WANdisco plc, www.wandisco.com

31

Chapter 3. Commands

Conguring the project and doing the nal import


The result of this command will be a new project, for which only the local root directory is under SVN control. This gives you many possibilities to congure which les/directories of your local le system should actually be versioned in the repository. From the Edit menu you can use Add and Ignore on les and directories. Furthermore, for les you can adjust properties using the respective commands from the Properties menu. After the project has been fully congured, use Modify|Commit to do the nal import into the repository.

3.3

Updating

Updating from the repository can be done either with a simple update of the working copy or by switching the working copy to another location/revision. The following commands are available from the Modify menu.

3.3.1

Update

Use Modify|Update to get the latest changes or a specic revision from the repository for the selected les/directory. Select HEAD to get the latest changes. To get a revision, select Revision and enter the revision number. Select Recurse into subdirectories to perform the update command not only for the current selected directory, but also for all subdirectories. Advanced options For sparse working copies, the Update will not pull in les/directories of not yet checked out repository subtrees. Select Set depth to working copy to get new subtrees as well (according to the Recurse into subdirectories option and the selected Depth). When selecting Allow unversioned obstructions, SmartSVN will continue to update new les from the repository for which locally unversioned les already exist. Otherwise the update will be cancelled in such situations, giving you the chance to cleanup these locally unversioned les beforehand. Use Include Externals to descend into externals (see 3.7.7). Use Rebuild working copy metadata (.svn) completely to fetch all pristine copies and property values freshly from the repository. This option should only be used to recover from irreparable working copy defects (like checksum mismatches). It will transfer about the same amount of data as a normal Check Out (see 3.1).

3.3.2

Update More

Use Modify|Update More to get locally missing directories and les from the repository for a foregoing non-recursive Update or Check Out (see 3.1). Update More checks for the currently selected directory whether there are not yet checked out subdirectories or les. They are presented in a list and you can select one c 2012 WANdisco plc, www.wandisco.com 32

Chapter 3. Commands or more of them to update. Recurse into subdirectories species whether the selected entries should be updated or checked out recursively. To get rid of locally checked out directories, use the inverse operation Exclude from Working Copy (see 3.3.3).

3.3.3

Update Exclude

Use Modify|Exclude from Working Copy on one or more directories to locally exclude them from the working copy. The directory wont be removed from the repository, but simply will be ignored for subsequent Updates (see 3.3.1). To get excluded directories back, use the inverse operation Update More (see 3.3.2).

3.3.4

Switch

Use Modify|Switch to switch the selected directory or le to another repository location. Select Trunk to switch back from a branch or tag to the main trunk. Select Branch or Tag and enter the branch or tag name to switch to a tag or branch. Select Other URL to switch to an arbitrary URL within the same repository. You can either switch to the selected location At HEAD or at a specic Revision. Select Recurse into subdirectories to perform the switch command not only for the currently selected directory, but also for all subdirectories. Regarding the Advanced options, refer to the Update command (see 3.3.1).

3.3.5

Relocate

Use Modify|Relocate to change the repository for the selected directory (and subdirectories) of your local working copy. Typically, this command is used when the URL/structure of an SVN server has changed. Relocate Directory shows the directory, relative to the projects root directory, which will be relocated. From URL displays the repository root URL of the selected directory, if this information is available locally. Otherwise it displays the complete repository URL of the directory. With To URL you can now specify the replacement string for From URL: Relocate will then search within the selected directory and subdirectories for URLs starting with From URL and replace the corresponding part by To URL.

3.4

Local Modications

Local commands can be performed without a connection to the repository. They are used to prepare the working copy state for a nal commit. The following local commands are available from the Modify menu.

3.4.1

Add

Use Modify|Add to schedule les or directories for being added to SVN control.

c 2012 WANdisco plc, www.wandisco.com

33

Chapter 3. Commands In case of directories you have the option to Recurse into subdirectories, which when selected - causes all subdirectories and les from subdirectories to be added as well. When a le is added, SmartSVN automatically applies certain properties to the le. Most important is the automatic detection of the les MIME-Type (see 3.7.3), which can basically be text or binary. Further property defaults can be specied in the project settings (see 7.3). Tip Automatic detection can be overridden by the Binary Files project settings (see Section 7.3.3).

3.4.2

Remove

Use Modify|Remove to schedule the selected les/directory for being removed from SVN control. Select Remove from SVN control and delete locally to schedule the les/directory for removal and to also delete them locally. Select Just remove from SVN control to schedule for removal only. After committing the changes, the les/directories will remain as unversioned. By default, SmartSVN refuses to remove les or directories that have local modications, as well as directories that contain modied or unversioned les. Select Force Removal if you wish to perform the removal of such items anyway.

3.4.3

Ignore

Use Modify|Ignore to mark unversioned les or directories as to be ignored locally. This is useful for les or directories which should not be put under SVN control. These are usually temporary, intermediate or automatically built les, like Cs .obj or Javas .class les, or directories containing such les. Local ignore patterns are stored within the working copy (in the svn:ignore property of the corresponding parent directories) and will be committed. Therefore, to have a le locally ignored, its parent directory must either be ignored as well, or be versioned, so that the necessary svn:ignore property can be stored there. Hence, when trying to ignore a le or directory within another unversioned directory, SmartSVN will ask you to add this parent directory. In addition to local ignore patterns, you can congure global ignored patterns in the project settings (see 7.3). You can select Ignore Explicitly to add each selected le/directory explicitly to the ignore list. If SmartSVN detects a common pattern for the selected les/directory, it will also allow you to Ignore As Pattern. This command is a shortcut for editing the svn:ignore property directly by by Properties|Ignore Patterns. Refer to Section 3.7.8 for details.

3.4.4

Delete Physically

Use Modify|Delete Physically to delete local les, or unversioned or ignored directories.

c 2012 WANdisco plc, www.wandisco.com

34

Chapter 3. Commands Warning! Be careful before deleting a le (or directory) as there will be no way to recover unversioned items.

3.4.5

Create Directory

Use Modify|Create Directory to locally create a directory within the currently selected directory. Enter the Path of the subdirectory that will be created. The path may consist of multiple directory names, separated by \ or / to create multiple directories at once. Select Schedule for addition to schedule the created directory/directories for being added to SVN control, see Section 3.4.1.

3.4.6

Rename

Use Modify|Rename to rename a le or directory which is already under SVN control. The le with the old name will be scheduled for removal, the le with the new name for addition. This command will preserve the les history.

3.4.7

Move

Use Modify|Move to move and/or rename a le or directory which is already under SVN control. The le with the old name will be scheduled for removal, the le with the new name for addition. This command will preserve the history of the moved item. There is also a special mode of this command that can be used to tell SmartSVN after the fact that a le was moved. For this to work, exactly two les must be selected: One that is missing or removed, and another that is unversioned, added or replaced. SmartSVN will then remove the missing le (if necessary), add the unversioned le (if necessary), and connect the history of the added le to that of the removed le. Tip You can also use Drag-And-Drop to copy or move les and directories.

3.4.8

Detect Moves

Use Modify|Detect Moves to convert already performed manual moves (including renamings) of les to SVN moves. Typically, you will not perform moves within SmartSVN itself, but with system commands, through an IDE, etc. One such external move results in a missing and a new unversioned le. Both les could then be added or removed, and committed, which will result in a correct repository content, but will not preserve the relationship between both les (which is actually one moved le). This especially aects the log of the added le: It will start at the committed revision and wont include the revisions of the removed le. To preserve the relation (and hence history/log), a post-move on both les has to be performed. Detect Moves can detect such already performed manual moves based on the le content and displays the corresponding suggestions of which les could be post-moved.

c 2012 WANdisco plc, www.wandisco.com

35

Chapter 3. Commands Invoke Detect Moves on a set of missing and unversioned les for which post-move should be detected. Depending on the number of selected les, the operation might take a while. The results will be displayed in terms of a list of possible post-moved les pairs. Suggestion displays the detected move in a descriptive manner. If you agree that the corresponding le pair actually represents a move that has happened, keep it selected so the corresponding post-move will be performed. Similarity can be helpful for this decision. It is entirely based on the comparison of the le contents and denotes the calculated likelihood for the le pair to be an actual move. For more details, Target displays the name of the unversioned (i.e. new) le. Source displays the name of the missing (i.e. old) le. If the name of the le has not changed, i.e. Target would be equal to Source, Source is omitted. In the same manner Target Path displays the path of the new le and Source Path displays the path of the old le. Again, Source Path will be omitted if it would be equal to Target Path. There can also be more than one possible Source for a specic Target. In this case SmartSVN always suggests the best matching Source, i.e. the le for which the highest Similarity value was calculated, and Alternatives shows the number of possible alternative sources. Use Compare to compare the currently selected Source and Target le with the File Compare (see 8.2). Use Alternatives to select an alternative source to be used instead of the original suggestion. Finally, if you consider a particular suggestion and all available Alternatives incorrect, you may deselect the suggestion so that no post-move will be performed for the respective target. Click OK to perform the selected post-moves.

3.4.9

Copy

Use Modify|Copy to create a copy of a le or directory which is already under SVN control. This command will preserve the history of the copied item. Select the Target Directory and the new File Name under which the copy of the le/directory shall be created. There is also a special mode of this command that can be used to tell SmartSVN after the fact that a le was copied. For this to work, exactly two les must be selected: One that is versioned, but not added or replaced, and another that is unversioned, added or replaced. SmartSVN will then add the unversioned le (if necessary) and connect the history of the added le to that of the other le. Tip You can also use Drag-And-Drop to copy or move les and directories.

3.4.10

Copy From Repository

With Modify|Copy From Repository you can copy a le or directory from the repository to your local working copy. This command can be used for recovering deleted les and directories from earlier revisions. Repository is the repository of your local working copy, it cant be changed as copies can only be performed within the same repository. For Copy enter the le/directory c 2012 WANdisco plc, www.wandisco.com

36

Chapter 3. Commands and its Source Revision which shall be copied. Specify the local directory Into Local into which the le/directory shall be copied. With Name will be the name (i.e., last component of the path) of the restored le/directory.

3.4.11

Copy To Repository

With Modify|Copy To Repository you can copy the selected local le/directory to the repository. This operation is useful for creating tags, although SmartSVN provides more convenient functions for this task (see Section 3.8). Repository is the repository of your local working copy, it cant be changed as copies can only be performed within the same repository. The local le/directory Copy Local will be copied to the projects Repository. The target directory is Into Directory. With Name will be the name (i.e. last component of the path) of the resulting le/directory. Because the copy is directly performed into the repository, you have to specify a Commit Message. Use Externals Revisions to specify how to handle externals revisions (see 3.7.7). This option is only relevant for externals which have their revisions set to HEAD. By default, Leave as is will not modify any externals revisions. Choose Fix all to have all revisions set to their current values, as present in the working copy. Choose Fix except below to have all revisions set to their current values except externals pointing to the specied location or some subdirectory of this location. Only when xing externals you can make sure that later checkouts of the copied location will produce exactly the same working copy. Otherwise, externals which have been left at HEAD will continue to bring the latest revisions of that externals which are in general not equal to that at the time of creating the copy.

3.4.12

Copy Within Repository

With Modify|Copy Within Repository you can perform copy operations that take place entirely within a repository. This is for instance a convenient and fast way to create repository tags/branches. Select the Repository within which the copy should be performed. Copy From and the Source Revision specify the copy source. For Copy you can either select to copy To or to copy Contents Into. In case of copy To, the source will be copied into Directory with its name set to With Name (last component of the path). For copy Contents Into, the contents (les and directories) of the source will be copied directly into the Directory with their corresponding names. Because the copy is directly performed in the repository, you have to specify a Commit Message. Note This copy operation is in fact no local operation, as it requires no working copy. Due to its close relationship with the other copy operations we have nevertheless put it into the chapter Local Modications.

c 2012 WANdisco plc, www.wandisco.com

37

Chapter 3. Commands

3.4.13

Revert

Use Modify|Revert to revert the local changes of the selected les/directories. In case of directories you have the option to Recurse into subdirectories. If deselected, only the properties of the directory itself will be reverted. Added and copied les/directories will be unscheduled for addition and return to unversioned state. Removed les/directories will be unscheduled for removal and restored with their content and properties taken from the pristine copy. Replaced les/directories will be unscheduled for replacement and restored with their content and properties taken from the pristine copy. Modied les/directories will be restored with their content and properties taken from the pristine copy (overwriting local changes!). Missing les will be restored with their content and properties taken from the pristine copy. Missing directories cant be restored, because the pristine copy is also missing. You have to freshly Update (see 3.3.1) them from the repository. Conicted les/directories will be restored with their content and properties taken from the pristine copy (ignoring local changes which caused the conict!). For Case-changed les their original le names will be restored and modications in contents/properties will be reverted. Warning! Be careful before reverting a le or directory as all local modications will be lost.

3.4.14

Mark Resolved

Use Modify|Mark Resolved to mark conicting les (see Table 2.5) or conicting directories (see Table 2.1) as resolved. You have to resolve conicts to be able to commit the les/directories. In case of directories you have the option to Resolve les and subdirectories recursively. If selected, all conicting les and directories within the selected directory will be resolved. Otherwise only the property conicts of the directory itself will be resolved. Regarding the File Content, use Leave as is to apply no further modications to resolved les. Use Take old to replace the contents of resolved les by the contents of their corresponding pristine copies as they were before the update/merge. Use Take new to replace the contents of resolved les by the contents of their corresponding pristine copies as they are now after the update/merge. Use Take working copy to replace the contents of resolved les by their contents as they were before the update/merge.

c 2012 WANdisco plc, www.wandisco.com

38

Chapter 3. Commands Tree Conicts Certain kinds of conicts are not directly related to the content or properties of a le (or directory) but to conicting actions on a le/directory. Such conicts are called treeconicts. Tree conicts are similar to normal conicts as conicting les/directories cant be committed before they have been resolved. The Local State (see 2.4.2) column for les shows details for a tree conict, if present. File and directory tooltips display this information as well. Example You have modied le foo.txt in your working copy. Your co-worker has renamed foo.txt to bar.txt and has committed this change. When updating from the repository, you will receive bar.txt but because of your local modications to foo.txt this le will not be deleted, but re-scheduled as copied from itself (but the revision before the update). Furthermore, bar.txt will receive your local modications of foo.txt. This represents a tree conict. There are dierent kind of tree-conicts, for a detailed analysis refer to: http://svn.collab.net/repos/svn/branches/1. 6.x/notes/tree-conflicts/

3.4.15

Mark Replaced

Use Modify|Mark Replaced to mark modied les or a directory as replaced, see Table 2.5 for details. Marking modied les or a directory as replaced does not aect the contents of the les or directories, but only the meaning of the commit and the history of the directory/les. This can be useful to express that the content of a directory/les is not related to its previous revision. The Log (see 3.9.7) of such a directory/les will not go beyond the replacement revision, meaning that the directory/les has been created at that revision. Example For example, we have a Java interface Person.java and one implementing class PersonImpl.java. As the result of a refactoring, we are getting rid of the interface Person.java and rename the class PersonImpl.java to Person.java. This results in a removed le PersonImpl.java and a modied le Person.java. When simply committing these changes, this would mean that the class PersonImpl.java has been removed and the interface Person.java has been changed to a class Person.java, with no history except of that one of the interface. Taking a closer look at this situation, it would be better to do a commit meaning that the interface Person.java has been removed and the class PersonImpl.java has been renamed to Person.java. At least that was the intention of our refactoring and it would also mean to preserve the history of PersonImpl.java for Person.java. To achieve this, we will use Mark Replaced on Person.java and then we will use Move on Person.java and PersonImpl.java, performing a postmove between both les (for details refer to Section 3.4.7), yielding a removed PersonImpl.java and a replaced Person.java, which has its history (Copy From) set to PersonImpl.java. c 2012 WANdisco plc, www.wandisco.com 39

Chapter 3. Commands

3.4.16

Clean Up

Use Modify|Clean Up to clean up unnished SVN operations for the selected directory (and all subdirectories). Cleaning up a working copy is necessary when the working copy becomes internally locked (in contrast to le locks, see Section 3.10). A working copy can become locked when certain SVN operations (like commit or update) are aborted. In general, cleaning up a working copy is a safe process. Note A clean up may fail for the same reasons for which the preceding SVN operation has failed. This typically happens if certain les or directories cant be read or written. In such cases, please check whether other running processes might lock the le and whether le permissions have been set adequately.

3.4.17

Fix

Use Modify|Fix to x (or repair) the selected directory/les. This option is only applicable for certain, unusual working copy states: Case-changed les SVN repositories and working copies are in general case-sensitive. This can cause problems when working on a case-insensitive operating system, like Microsoft Windows or certain le systems on Apple Mac OS, and changing the le names case (upper-case to lowercase, etc.). Because of SVNs working copy format and the pristine copies, its technically not possible to handle such a le name case change. One solution is to avoid this situation by either only performing le name case changes on an operating system which supports case-sensitive le names, or directly in the repository by using the Repository Browser (see 4). At any rate, a le name case change may happen on a case-insensitive operating system, e.g. because of defect software tools, etc. SmartSVN detects such invalid changes and puts the le into case-changed le state, see Table 2.6. Fix will now change back the le name case to its original form as found within the pristine copy, resolving this problem. Nested Roots A nested root (see Table 2.1) is a working copy within another working copy which is not related to this parent working copy. SVN commands ignore such nested roots; they are simply treated as unversioned directories. Nested roots typically result from moving a directory from one location to another without using the proper SVN commands, like Move (see 3.4.7). This leaves a missing directory at its original location and introduces a nested root at its current location. Fix oers the following solutions for nested roots, depending on their origin:

c 2012 WANdisco plc, www.wandisco.com

40

Chapter 3. Commands Mark as Copied will convert the nested root to a copied directory, with its copy location being the original repository location. This option is only available if the current location is part of the same repository as the original location. Convert to Unversioned strips o the working copy metadata (.svn directories) for this directory and all of its children. This will make the directory unversioned, so it can be added and committed afterwards. This option is always available but in general should only be used if Mark as Copied is not available, as unversioned directories can be added afterwards, but their history will be lost. Added-missing directories If a directory has been scheduled for addition (see Section 3.4.1) and has been locally deleted afterwards (i.e. the directory and its .svn subdirectory are missing), the directory is in Added-missing state (see Table 2.1). Such directories are actually only a leftover entry in the parent directorys metadata directory (.svn). The resolution is to Revert (see 3.4.13) them, which is what this command will do.

3.4.18

Validate Working Copy Metadata

Use Modify|Validate Working Copy Metadata to check the working copy metadata (.svn directory) for possible inconsistencies, and to do some other house-keeping tasks.

3.5

Commit

Use Modify|Commit to commit (i.e. send) the changes in the selected les/directory to the repository. The Commit wizard guides you through the commit process, starting with the Conguration. Based on the Conguration, the working copy will be scanned for changes, which is especially important when performing the Commit on a directory. Subsequent pages allow further customization of the commit. Their presence depends on the changed les and directories found during the scanning phase. Before the commit wizard opens, it checks whether you might have forgotten to select some les or directories, and in that case shows a warning. For details, refer to the Preferences (see 9.4). Also, a warning will be issued if you are going to commit switched (see 3.3.4) les or directories. Unless this is actually intended, you should switch back the corresponding entries and re-run the commit.

Page Conguration
This page is only present when committing one or more directories. Select Recurse into subdirectories to scan not only changes from the selected local directory, but also from subdirectories. When recursing into subdirectories, select Descend into externals to also scan for changes in external working copies (see 3.7.7). c 2012 WANdisco plc, www.wandisco.com 41

Chapter 3. Commands When clicking Next the le system of your project will be scanned. This may take some time.

Page Externals
This page is only displayed if the option Descend into externals on the Conguration page has been selected and at least one committable entry within an external working copy has been found. For details on externals, refer to Section 3.7.7. Every such external working copy is listed with its Local Path and its URL. The projects working copy itself is also listed with local path .. Every working copy can be individually selected or deselected for the commit by toggling the checkbox in Path column (either with the mouse or with <Space>-keystroke). Working copies pointing to the same repository (the URL helps in seeing this) can be committed together, hence SmartSVN will have to perform as many commits as dierent repositories are involved in the overall commit process. Warning! When committing to multiple repositories, every commit will create its own revision in the corresponding repository. Hence, atomicity of such commits cannot be guaranteed. This for example means that the commit to one repository can succeed while the other one fails. While xing the failing commit another person might already have updated his or her working copy and only have received the successfully committed revision. This might result in (temporary) inconsistencies in his/her overall project. You can choose whether to commit the selected working copies with One commit message or with Individual commit messages. If you are committing multiple working copies with dierent Bugtraq-Properties (see 3.7.9) congurations, its required to use Individual commit messages to have the Bugtraq-Properties functionality available on the Files page.

Page Detect Moves


This page is only displayed if the option Detect moved and renamed les in the Preferences (see 9.4) has been selected and at least one moved or renamed le pair was detected. Refer to Section 3.4.8 for details. With Dierences you can toggle the integrated compare view. This will show the dierences for the currently selected le in the lower part of the Commit dialog. The change display behaves similarly to the Changes view (see 2.6).

Page Files
This pages shows a list of all les and directories which were found to be committable according to the selected options from the Conguration page, and from the conguration in the Preferences (see 9.4). To exclude a le/directory from the commit, deselect the corresponding checkbox (either with the mouse or by pressing <Space>-keystroke). c 2012 WANdisco plc, www.wandisco.com 42

Chapter 3. Commands Note SmartSVN also displays certain kinds of les which are not committable (e.g. conicted les, refer to Table 2.5). This is a precaution to not forget to resolve these les problems and commit them as well (if necessary).

You may review your changes by expanding the dialog with the Dierences button. This will show the dierences for the currently selected le in the lower part of the Commit dialog. The change display behaves similarly to the Changes view (see 2.6). Alternatively, you can also double-click a le to open a File Compare (see 8.2) frame. For the Commit Message you can either enter a new message or select an older message from the message popup on the top right of the text eld. The popup menu will show recently entered commit messages, and you can clear this message history with Clear Message History or use Get from Log to fetch an older commit message from the log. With <Ctrl>+<Space>-keystroke you can trigger a le name completion, based on all of the les that have been selected for the commit. Depending on how Bugtraq-Properties (see 3.7.9) are congured for the current working copy, there may be an additional issue ID input eld. The name of this eld can vary, depending on the Bugtraq-Properties. Its content will be appended/prepended to entered commit message afterwards, forming the nal commit message. If the spell check (see 9.13) has been congured, SmartSVN will check the entered Commit Message for basic spelling mistakes. The spell check ignores le paths, i.e. strings containing a /, and issue IDs which are part of the commit message and which can be recognized by the Bugtraq-Properties. For details regarding the spell checks popup menu, refer to Section 9.13. Tip Commit messages will be displayed in various kinds of logs. Hence, a descriptive commit message will help you and your team later on if you need to go through your past changes for some reason, e.g. tracking down a bug.

By default, SmartSVN will warn you in case of an empty commit message. You can disable this warning in the Preferences (see 9.4). Tip You may congure a template message using the tsvn:logtemplate property which has to be set on the project root. For details refer to Section 11.10.

If Descend into externals has been selected and multiple working copies on the Externals page have been selected for committing, there will also be a topmost Working Copy selector. All other items on this page are always related to the selected working copy. In particular it will be necessary to enter a Commit Message for each working copy.

c 2012 WANdisco plc, www.wandisco.com

43

Chapter 3. Commands

Page Locks
This page will only be displayed if the les/directories selected for the commit have been found (during the scanning) to contain locked les. Select Keep locks for committed les to keep the les locked even after having them committed. Select Unlock committed les to unlock them after the commit. In the latter case you can additionally select unchanged but locked les which had been detected during the scan and which should be unlocked upon a successful commit as well. Tip You can congure whether Keep locks for committed les or Unlock committed les should be selected by default in the Project Settings (see 7.3.3).

Click Finish to nally start the commit.

3.6

Merging
Note Subversions merging has been signicantly improved with version 1.5 and its merge tracking support. Most merging features require a Subversion 1.5 server to work. Subsequent explanations assume that you are performing the commands against a Subversion 1.5 server.

Merging is used to incorporate changes from one development line into another.

Two very common use cases of merging are release branches and feature branches: A release branch is typically forked o from the main development line (trunk) after the release of a new version (of the software project, of the website, etc). With the release the corresponding version typically goes into production use and has to gain on stability while the development continues on the trunk. Therefore a release branch will only receive problem xes (bug xes) from trunk by merging them to the branch. A feature branch is a parallel development to the trunk, for the purpose of developing a new feature which shall nally be brought back to the trunk. A feature branch is frequently merged from trunk to stay up to date and once the implementation of the feature has been nished, all relevant changes are merged back to the trunk. For a more indepth information on these use cases, examples and general information, refer to http://svnbook.red-bean.com/.

c 2012 WANdisco plc, www.wandisco.com

44

Chapter 3. Commands Warning! As merging can become a rather sophisticated task, there are certain recommandations. The most important ones are: Do only recursive merges and try to always merge on the same merge root, preferably trunk itself or the root of a branch. Avoid merging into a working copy which contains mixed revisions. Therefore do an Update (see 3.3.1), preferably to HEAD, before. Avoid merging into non-recursively (or incompletely) checked out working copies. Therefore do an Update More (see 3.3.2) on your merge root, selecting all les and directories and the Recurse into subdirectories option.

3.6.1

Merge

Use Modify|Merge to merge changes from another source branch to the selected le/directory. Select Trunk to merge from the main trunk. Select Branch or Tag and enter the branch or tag name to merge changes from a branch or tag. Select Other URL to merge from an arbitrary URL, specifying the corresponding repository and Path. Alternatively, you may select a merge source from the History button. It shows a list of previous merge sources you have used as well as merge sources extracted from the svn:mergeinfo (see 3.7.10) property of your merge target. Use All Revisions to merge all those revisions which have not yet been merged from the selected location. SmartSVN will detect them based on the present merge tracking information. Example You will typically use this option when working with a feature branch to keep it in sync with the trunk. Warning! All Revisions does not work with pre-1.5 servers (e.g. 1.4 servers). Use Revision Range to manually specify multiple (ranges of) revisions to be merged from the selected location. SmartSVN will detect whether certain revisions of the specied ranges have already been merged and avoid to repeatedly merge them. Single revisions are just specied by their revision number while ranges starting at start (inclusive) and ending at end (inclusive) are specied by start-end. Multiple revisions (ranges) can be specied by separating them by a colon (,). Certain revisions may be excluded by prexing them with an exclamation mark (!). Instead of entering the revisions manually, you can choose them from the revision browser (see 3.14.2). The revision browser will display those revisions which have not been merged by a green arrow (merge candidates). From the Options-button you can select Show only mergable revision to restrict the revision list to those merge candidates. By default, Show all revisions will include also revisions which have already been merged. c 2012 WANdisco plc, www.wandisco.com 45

Chapter 3. Commands Example You will typically use this option when working with a release branch to get only bugx revisions from the trunk to this branch. Select Reverse merge to reverse the changes between the selected revisions. Internally, this is achieved by swapping the start and end revisions. Advanced options By default, merging takes the ancestry into account. This means, that merging does not simply calculate (and merge) the dierence between two les which have the same path, but also checks if both les are actually related. For the typical merging use cases, this behaviour leads to the expected results and it is also required for the merge tracking to work. You can switch this behaviour o by selecting Ignore ancestry, however this option is not recommended unless you have a good reason to use it. Regarding Ignore changes in EOL-style and For whitespaces handling, refer to Create Patch (see 3.9.10). Deselect Recurse into subdirectories to merge only changes to the selected directory/le itself but not its contained les, etc. In general its recommended to keep Recurse into subdirectories selected. With Record only no les will be touched during the merge, but only the Mergeinfo (see 3.7.10), will be adjusted correspondingly, so the core merge tracking mechanisms consider the revisions as merged. This option can be useful to block certain revisions from being actually merged. By default merging will stop when its required to delete locally modied les, because they have been removed in the merge source. You can switch o this safety check by selecting Force deletion of locally modied les, if necessary. Close the dialog with Merge to immediately perform the merge to the selected directory/le of the current working copy. Alternatively you may choose to Preview the changes which the merge will bring, for details refer to the Merge Preview (see 8.10). Tip You can choose to keep the auxiliary merge les even for nonconicting les in the Project Settings (see 7.3.3).

3.6.2

Merge from 2 Sources

Use Modify|Merge from 2 Sources to merge changes between two dierent merge sources (URLs) to the selected le/directory. Changes are merged from one Repository between From and To to the local Destination. The last 10 merge sources will be stored and can be set using the drop-down button beside the Repository selector. For details regarding the Advanced options, refer to Section 3.6.1. Note Most merging use cases are covered by Merge (see 3.6.1) and Reintegrate Merge (see 3.6.3) and if possible these commands should be used. 46

c 2012 WANdisco plc, www.wandisco.com

Chapter 3. Commands

3.6.3

Reintegrate Merge

Use Modify|Reintegrate Merge to reintegrate changes from another URL to the selected le/directory. Reintegrate merging is dierent from the normal merging: It carefully replicates only those changes unique to the source Merge From compared to the local working copy. Example You will typically use Reintegrate Merge after the work of a feature branch has been nished and the feature shall be reintegrated into the trunk. Here its important that all the previous merges from trunk to the feature branch are ltered out to avoid unnecessary merge conicts, etc. That is in short what reintegrate does. For a detailed explanation, refer to http://svn.haxx.se/users/archive-2008-05/ 0808.shtml. For details regarding the Advanced options, refer to Section 3.6.1.

3.6.4

Apply Patch

Use Modify|Apply Patch to apply a patch le to your working copy. Currently supported patch le formats are unidi patches. See Section 3.9.10 on how to create patches with SmartSVN. For the Select Patch File dialog, select the patch le which you want to apply. Typically, patch les have .patch or .diff extensions. Based on the le paths contained in the patch le, SmartSVN will try to detect the correct base directory to which the patch should be applied. It will fail, if at least one le to patch has not been found in the working copy. The resulting window is similar to the Merge Preview (see 8.10) window, refer to this section regarding the available commands. The Files area allows to deselect certain les from the patch. You can nally perform the patching by Patch|Apply Patch. Unpatchable les In case the patch could not be applied to certain les, an Unpatchable les area will be displayed in the top of the window. The table contains the Path of the le and a description of the Problem. The tooltip text of the Problem column contains more details in case expected and actual lines did not match when trying to apply the patch to the le.

3.7

Properties

Both, les and directories can have properties attached to them. There exists a set of predened properties, which are used by SVN itself to manage the working copy. All other properties are user-dened properties. Following commands are related to properties and are available from the Properties menu. c 2012 WANdisco plc, www.wandisco.com 47

Chapter 3. Commands

3.7.1

Edit Properties

Use Properties|Edit Properties to display and edit properties of the selected le/directory. For details refer to Section 8.3. Note Internal SVN properties are displayed with grey font. Its not recommended to modify SVN properties directly by this dialog but better use the special commands which SmartSVN oers from the Properties menu.

You can Add, Edit and Remove individual properties. Use Revert on one or more properties to reset their Current Value to their Base Value.

3.7.2

Set or Delete Property

Use Properties|Set or Delete property to change a property for multiple les/directories at once. Enter the name of the Property; the drop-down button oers the SVN internal properties for selection. To set a property value, either select Set Value To and enter the new property value, or, in case of boolean SVN-properties, select Set boolean property. To remove the property, select Delete Property. For directories, choose to Recurse into subdirectories and optionally to Include this directory. Choose Force to skip a couple of checks which are performed for certain property (values). Example To get rid of all explicit mergeinfo from your project except from the project root, select svn:mergeinfo for Property, choose Delete Property and Recurse into subdirectories and deselect Include this directory.

3.7.3

MIME-Type

Use Properties|MIME-Type to change the SVN MIME-type of the selected les. The MIME-type can be either a default Text, a default Binary or a Custom type. In case of a Custom type, you have to specify the corresponding MIME-type here. E.g. text/html, application/pdf or image/jpeg. MIME-types cant be arbitrary strings but must be well-formed. For instance, a MIME-type must contain a /. By default, SmartSVN checks whether MIME-types are well-formed. Use Force to disable this check. The MIME-types are relevant for some SVN operations, for instance updating, where in case of text types the line endings, etc. can be replaced. By default, when adding les (see Section 3.4.1), the coarse MIME-type (either text or binary) is automatically determined by SmartSVN. In general this detection is correct, but in certain cases you may want to explicitly change the MIME-type of the le with this command. Within the project settings (see 7.3.3) you can dene le name patterns which should always be treated as binary.

c 2012 WANdisco plc, www.wandisco.com

48

Chapter 3. Commands

3.7.4

EOL-Style

Use Properties|EOL-Style to change the EOL-Style (line separator) of the selected les. The EOL-style is used when updating or checking out a text le and results in a corresponding conversion of its line endings: Platform-dependent converts to the platforms native line separators. LF, CR, CR+LF converts to the corresponding line separators, regardless of the current platform. As is performs no conversion. In the project settings (see 7.3.3), the default EOL-style which will be applied to every added le can be specied. By default, this will be Platform-dependent. When changing the EOL-style of a le, SmartSVN checks whether the le has consistent line endings. If this is not the case, it will reject to change the EOL-style (other behaviors can be congured in the project settings). To skip this check, use Force.

3.7.5

Keyword Substitution

Use Properties|Keyword Substitution to select the keywords for the selected les, which shall be substituted (expanded) locally. Keyword substitution only works for text les. For each keyword you have the option to Set or Reset it. Select Dont change to keep the current substitution for the keyword.

3.7.6

Executable-Property

Use Properties|Executable-Property to change the Executable-Property of the selected les. The Executable-Property is a versioned property, but is only used on Unix(-like) platforms, where it denes whether the Executable Flag should be set to a le or not. Choose Executable if the Executable-Property should be assigned to the le or Non-Executable to remove the property from the selected les.

3.7.7

Externals

Use Properties|Externals to dene or change externals. An external (ocially also referred to as externals denition) is a mapping of a Local Path to an URL (and possibly a particular Revision) of a versioned resource. In general, externals are specied by complete URLs, but there are also shorter representations which can be more exible. The URL input eld allows to switch between the available representations for a given URL. For a detailed description of externals and valid URL formats, refer to http://svnbook.red-bean.com/nightly/en/svn. advanced.externals.html.

c 2012 WANdisco plc, www.wandisco.com

49

Chapter 3. Commands Example To include the external http://server/svn/foo as directory bar/bazz at revision 4711 into your project, select directory bar and invoke Properties|Externals. Click Add, enter bazz into the Local Path input eld, http://server/svn/foo into the URL input eld, 4711 to the Revision input eld and conrm by OK: After committing your property change, an update on bar will create the subdirectory bar/bazz with the content from http://server/svn/foo at revision 4711. Tip It is safer to always set a Revision to externals. In this way you can always be sure about which actual version you are working with. When you decide to use a more recent revision of the external, you can evaluate it before and if you are satised, increase the Revision number of the external denition. Externals may refer to directories as well as to les. In case of les, the referred URL must be part of the same repository to which its local parent directory (i.e. the directory to which the svn:externals property belongs) belongs.

Note

3.7.8

Ignore Patterns

Use Properties|Ignore Patterns to add, change or delete local ignore patterns for a directory. Local ignore patterns dene le and directory patterns to be ignored within the directory. Local ignore patterns are stored within the working copy (in the svn:ignore property of the directory) and will be committed. Therefore ignore patterns can only be applied to versioned directories. By default, the Patterns are only set to the selected directory. You may also choose to set the patterns to all subdirectories by Recurse into subdirectories. In case of recursive ignore patterns, you may alternatively consider to specify global ignore patterns within the project settings (see 7.3.3). To add an ignore pattern, you can also use the Modify|Ignore command.

3.7.9

Bugtraq-Properties

Use Properties|Bugtraq-Properties to congure the Bugtraq-Properties for the current working copy. Bugtraq-Properties are a technique for integrating Subversion with issue tracking systems. A detailed specication for the Bugtraq-Properties can be found at: http://tortoisesvn. tigris.org/svn/tortoisesvn/trunk/doc/issuetrackers.txt, username is guest with empty password. SmartSVN implements this specication with following mapping from UI elements to core bugtraq:-properties as shown in Table 3.1.

c 2012 WANdisco plc, www.wandisco.com

50

Chapter 3. Commands bugtraq-Property bugtraq:url bugtraq:warnifnoissue bugtraq:label bugtraq:message bugtraq:number bugtraq:append bugtraq:logregex UI Element URL Remind me to enter a Bug-ID Message Label Message Pattern is true exactly if Bug-ID is set to Numeric is true exactly if Append message to set to Top For the version with one regular expression this corresponds to Bug-ID expression. For the version with two regular expressions, Message-Part Expr. corresponds to the rst line and Bug-ID expression corresponds to the second line.

Figure 3.1: Mapping from core bugtraq:properties to SmartSVN UI elements

Example Your commit messages look like: Ticket: 5 Some message or ticket #5: Some message and you want the 5 show up as a link to your issue tracker. In this case, set Bug-ID expression to [Tt]icket:? #?(\d+) and leave Message-Part Expr. empty. If you want the whole Ticket #5 part show up as a link, use the same Bug-ID expression and also set Message-Part Expr. to this value. Example Lets say your commit messages look like this: CF-11: Some message, or ET-12: Some message. Then, if you want the 11 and 12 to show up as links to your issue tracker, set Bug-ID expression to \d+ and the Message-Part Expr. to (CF|ET)-(\d+). If you want the whole CF-11 or ET-12 part to show up as a link, set Bug-ID expression to (CF-\d+|ET-\d+) and leave Message-Part Expr. empty.

3.7.10

Merge Info

Use Properties|Merge Info to change the svn:mergeinfo property for the selected les/directory. Warning! The svn:mergeinfo is a core part of Subversions merge-tracking mechanisms and is automatically managed by Modify|Merge and related commands. If you want to block certain revisions manually from being merged, you should use Modify|Merge with the Record only option set.

3.8

Tags and Branches

SmartSVN simplies the handling of Tags and Branches. Both Tags and Branches are no native SVN concepts, but can easily be handled by the help of Copy To Reposic 2012 WANdisco plc, www.wandisco.com 51

Chapter 3. Commands tory (see 3.4.11) and Copy Within Repository (see 3.4.12). SmartSVN provides special support for managing tags and branches, which are based upon these copy commands. Commands related to the management of tags and branches are available from the Tag+Branch menu. Various other commands support tags and branches alternatively for entering raw URLs.

3.8.1

Tag-Branch-Layout

The Tag-Branch-Layout denes the projects root URL (within the repository) and where the trunk, tags and branches of the project are stored. It aects the presentation of and the working with URLs for various commands. When invoking a tag/branch-aware command on a directory for which no layout can be found, SmartSVN will prompt you to congure a corresponding layout in the Congure Tag-Branch-Layout dialog. A Tag-Branch-Layout is always linked with a corresponding Project Root. A Project Root is simply the URL of the top-most directory of a project. Any directory can be dened as a project root as the denition of what a project is, is completely up to you. The rst decision for a Project Root is whether to enable or disable Tag-BranchLayouts for it. Many SVN projects are organized using tags and branches. In this case choose Use following layout to congure the layout. If the corresponding project is not organized by tags and branches, choose Do not work with tags and branches for this project root to switch Tag-Branch-Layouts o. Trunk species the root directory of the projects trunk. Branches and Tags specify the directory patterns of the branch and tag root directories, respectively. All paths are relative to the Project Root and when using values trunk, branches/* and tags/* here, you will be compatible with the suggested SVN standard layout. Example The Subversion project itself is located at http://svn.collab.net/repos/svn/. Hence for the corresponding SmartSVN project, Project Root must be set to http://svn.collab.net/repos/svn/. Subversions Trunk URL is http://svn. collab.net/repos/svn/trunk, i.e. trunk is the relative path and must be set for Trunk. Branches are located in http://svn.collab.net/repos/svn/branches, e.g. http://svn.collab.net/repos/svn/branches/1.5.x is the root of the 1.5.x branch. I.e. Branches must be set to branches/*. This is similar for Tags. Its also possible to use multiple branch or tag patterns. In this case, when entering e.g. a branch, you have to specify not only the branch name, but the relative path to the common root of all branches.

c 2012 WANdisco plc, www.wandisco.com

52

Chapter 3. Commands Example A project may also contain shelves which can be interpreted as personal branches. For instance, the Project Root is located at svn://server/svn/proj. The normal branches are located in svn://server/svn/proj/branches and the shelves are located in svn://server/svn/proj/shelves/[username], e.g. svn://server/svn/proj/shelves/bob/my-shelve. Hence, for Branches following patterns should be used: branches/*, shelves/*/*. Now, when e.g. creating a branch b1 with Tag+Branch|Add Branch, you have to enter branches/b1, so SmartSVN knows that the branch should be created in the branches directory. When e.g. switching to Bobs my-shelve with Modify|Switch, you have to enter shelves/bob/my-shelve, so SmartSVN knows that it should switch to a branch within the shelves/bob directory. SmartSVN uses the proposed standard layout for new projects. If you want congure another default layout, open one project which contains the wanted layout, select Tag+Branch|Congure Layout and use Make this conguration the default here.

3.8.2

Add Tag

Use Tag+Branch|Add Tag to create a copy (Tag) of your local working-copy in the tags directory of your repository. Name will be the name of the tag and Location shows the corresponding location. You can create two kinds of tags: Working Copy tags are a snapshot of your current working copy. Such a tag will contain local changes, if present unless Skip local changes has been selected. It will also reect mixed local revisions and switched directories. Repository Revision tags are server-side tags which represent a snapshot of the repository at a given revision. Tip Repository Revision tags can be useful if your working copy contains local changes but you dont want them to be part of the tag. However, in this case you should make sure that your working copy actually corresponds to the revision which you plan to tag, i.e. you should do an update (see 3.3.1) to that revision before and make sure that there are no switched directories.

By default, SmartSVN will fail if the specied tag already exists. Select Overwrite existing tag, if necessary to create the tag anyway, replacing the already existing tag. Use Externals Revisions to specify how to handle externals revisions (see 3.7.7). For details refer to Section 3.4.11. Note This command is similar to Modify|Copy Local to Repository (see Section 3.4.11), but simplies the special task of Tagging.

c 2012 WANdisco plc, www.wandisco.com

53

Chapter 3. Commands

3.8.3

Tag Multiple Project Roots

Use Tag+Branch|Tag Multiple Project Roots on one or more project roots (working copy roots) to create a tag for all of these roots. Enter the Tag Name and Commit Message which will be used for the creation of the tag. Select Fix external revisions to have all revisions of externals set to their current values, as present in the working copy. This functionality is provided by the Tag Multiple Project Roots plugin (see 11.9).

3.8.4

Add Branch

Use Tag+Branch|Add Branch to create a copy (Branch) of your local working-copy in the branches directory of your repository. This command is similar to Tag+Branch|Add Tag, refer to Section 3.8.2 for details.

3.8.5

Tag Browser

Use Tag+Branch|Tag Browser to display all tags and branches of your project in a hierarchical structure. The hierarchy denotes which tags/branches have been derived (i.e. copied) from other branches. Tags and Branches display the tags or branches location as specied with the Congure Layout (see 3.8.6) command. The subsequent table will contain tags and branches found herein. A tag or branch has a Name, a Revision at which it had been created and possibly a Removed At revision at which it had been removed. The tag browser is built upon information from the Log Cache (see 5.3). With Refresh you can refresh the cache and rebuild the tag/branch-structure. Tags/branches can be deleted by Remove which will remove the corresponding directory from the repository. From the Options-button you can select to show both Branches and Tags, Branches only or Tags only. Recursive View species whether the table shall also display tags/branches which have been indirectly derived from the currently selected branch in the tree. Select Removed Tags/Branches to also display tags/branches which have been deleted within the Repository. The corresponding items will contain a red minus within their icon to denote the deletion. The Branch drow-down button allows to sort the branches either by Name or by Revision. Tip You can invoke the Tag Browser also from tag or branch name input elds by clicking the ellipsis button to the right (...) or using <Ctrl>+<Space>-keystroke.

3.8.6

Congure Layout

Use Tag+Branch|Congure Layout to congure the Tag-Branch-Layout for the currently selected directory. This command is only available on the working copy root directory and externals roots (see 3.7.7). For details refer to Section 3.8.1. c 2012 WANdisco plc, www.wandisco.com 54

Chapter 3. Commands Select Make this conguration the default to have this layout applied to all new projects.

3.9

Queries

SmartSVN oers following non-modifying commands some of them work locally, others by querying the repository from the Query menu.

3.9.1

Show Changes

Use Query|Show Changes to compare the selected les or directory against their pristine copies. Show Changes will correspondingly open one or more File Compare (see 8.2) frames or the Properties Compare (see 8.3) for a directory. For details, regarding the warning limit on the number of les to compare at once, refer to Section 9.6. No connection to the repository is required.

3.9.2

Compare with HEAD

Use Query|Compare with HEAD to compare a single, local le with the HEAD revision in the repository. If you want to compare against an arbitrary revision or some other repository le, use Compare with Revision (see 3.9.4).

3.9.3

Compare with HEAD

Use Query|Compare with Previous to compare a single, local le with the next-to-last revision in the repository (i.e. the revision before HEAD). If you want to compare against the HEAD revision itself, use Compare with HEAD (see 3.9.2). If you want to compare against an arbitrary revision or some other repository le, use Compare with Revision (see 3.9.4).

3.9.4

Compare with Revision

Use Query|Compare with Revision to compare a single, local le with another revision of the same le or even another le. Select either to Compare the Working Copy or the Pristine Copy. Select to compare With the Trunk or a specic Branch or Tag or an arbitrary Other URL. Select whether to retrieve the repository le At the repository HEAD or at a another Revision. The result will be a File Compare (see 8.2) frame. Tip Use Compare with HEAD (see 3.9.2) if you want to quickly compare a le against the latest repository revision.

c 2012 WANdisco plc, www.wandisco.com

55

Chapter 3. Commands

3.9.5

Compare 2 Files

Use Query|Compare 2 Files to compare two local les with each other. No connection to the repository is required. When having one or more missing les selected, their pristine copies will be used for the comparison instead.

3.9.6

Compare Repository Directories

Use Query|Compare Repository Directories to compare two dierent repository directories for changes (either added, removed or changed les and directories). This command gives you similar information like Create Patch between URLs (see 3.9.11), but in a more convenient representation. The result will be a Compare Repository Directories (see 8.4) frame. The comparison is performed for one Repository between directories From and To. Select Recurse into subdirectories to compare not only the directory and its immediate les itself, but also descend into subdirectories. Regarding Ignore Ancestry, refer to Section 3.9.11.

3.9.7

Log

Use Query|Log to display the change history of the selected le/directory. On the Conguration page you can specify, how far back in history the changes should be displayed. Select Stop logging on copied locations, to make SmartSVN not trace further changes after it has encountered a revision where the le/directory has been copied from another location. Select Include merged revisions to also fetch the originating revisions for revisions which have been merged. This option recursively descends into merged revisions and depending on the number of merges that have aected the le/directory this may result in a large or even huge number of reported revisions. On the Advanced page, you can congure the usage of the Log Cache (see 5.3). By default, the Log Cache is Enabled with updating, which will speed up logging. You can also choose Enabled without updating to skip updating the cache from the repository, before it is queried. With this option you can perform logs without requiring any connection to the repository. However new revisions from the repository wont be displayed. With Disabled the log command will be performed directly against the repository. This can be helpful if your Log Cache is obsolete due to changes in the repository of already cached log data, see Section 5.3 for details.

c 2012 WANdisco plc, www.wandisco.com

56

Chapter 3. Commands Note When using Include merged revisions with the Log Cache being Enabled, it will still be necessary to perform the Log directly against the repository. The Log may also be performed directly against the repository if the corresponding Log Cache is currently updating a large number of revisions from the repository. The reason is that instead of waiting for the Cache update to be nished it will in general be faster to perform the Log directly.

When Log HEAD instead of working revision is selected, the Log will be performed against the selected directorys/les URL at HEAD. This will report even revisions for the URL which are newer than the corresponding working copy revision. The disadvantage of this option is that the Log might fail, because the URL does no longer exist within the repository at HEAD. After you have congured the command, click OK to proceed. Depending on the conguration the upcoming Log frame will show the resulting log as a directory/le tree or as a list of single le revisions. For details refer to Section 8.7.

3.9.8

Revision Graph

Use Query|Revision Graph to display the complete family tree for the selected le or directory. The Revision Graph shows all entries (les/directories) within all revisions which are related to the selected le/directory, either by subsequent changes or by copies, in both directions future and past. Hence, the Revision Graph of an entry also contains the complete Log (see 3.9.7) of that entry upto its origin. On the Conguration page, you can congure the Log Scope of the Revision Graph: The Revision Graph is based on the complete log of a subset of the repository (not only the le/directory itself), what is necessary to trace copies. Unfortunately, logging the complete repository can require signicant computational eort, even if the Log Cache (see 5.3) is used. On the other hand, entries are typically not copied across the whole repository, but only across a certain part of it. This is e.g. the case, when creating a branch, or moving one le from one directory to another. Using this knowledge, you can limit the computational eort by only logging the Project Root of your current project or even a specic Path instead of the whole Repository Root. For the latter two options, the origin of the entry, i.e. where it had been added, might not be found, because the corresponding path is not below the Log Scope. In this case, SmartSVN will automatically extend the Log Scope to the Repository Root and re-run the search for the origin. When creating a Revision Graph for a directory, you can also choose to Report Children. This will not only show revisions, where the directory itself has been modied (properties), but also all revisions, where one of its (in)direct children has been modied. Revisions, where children have been modied are considered as simple modications of the directory, independent of whether children have been modied/added/removed or copied.

c 2012 WANdisco plc, www.wandisco.com

57

Chapter 3. Commands Warning! Be careful, when using Report Children, because depending on the selected directory and the size of your repository this can result in really huge revision graphs and a correspondingly large memory consumption. On the Advanced page, you can congure the usage of the Log Cache (see 5.3), see the Log command (Section 3.9.7) for details. After performing this command, the Revision Graph window of the selected le/directory will come up. For details, refer to Section 8.8.

3.9.9

Annotate

Use Query|Annotate to view the history of the selected le on a per-line basis. Similar to the Log command (see Section 3.9.7), you can congure the period of time for which the annotated view shall be calculated. On the Advanced page, select Track content of all revisions to have the le contents of all revisions present for the subsequent Annotate window. Otherwise you will only be able to see the content of the latest revision for the selected le. Use Treat even binary revisions as text to continue the Annotate even when it encounters one or more binary revisions of the le. This option can be necessary if the MIME-Type (see 3.7.3) of a le had been corrected e.g. from binary to text in some earlier revision, although the le had text content since ever. In case the le actually had binary content in some earlier revision, parts of the annotate output might be trash. After performing this command, the Annotate window for the selected le will come up. For details refer to Section 8.9.

3.9.10

Create Patch

Use Query|Create Patch to create a Unidi patch for the selected les/directory. A patch shows the changes in your working copy on a per-line basis, which can for instance be sent to other developers. See Section 3.6.4 on how to apply patches with SmartSVN. The patch will be written to the local Output File. In case of creating a patch for a directory, you can select Recurse into subdirectories on the Advanced page to create the patch recursively for all les within the selected directory. On the Advanced page, select Ignore change in EOL-Style to not output line changes for which only the line ending diers. This can be useful after having the line endings of a local le changed temporarily, but only relevant changes should be part of the patch. With For Whitespaces you can congure to not output certain changes which are only aecting whitespaces. Use No special handing to do not ignore any changes regarding whitespaces. Use Ignore changes in the amount to ignore those lines for which only blocks with one or more whitespace characters have been replaced by blocks with one or more other whitespace characters. Use Ignore them completely to output only lines where anything else but whitespaces has changed.

c 2012 WANdisco plc, www.wandisco.com

58

Chapter 3. Commands

3.9.11

Create Patch between URLs

Use Query|Create Patch between URLs to create a Unidi patch between two arbitrary URLs. See Section 3.9.10 for more details on patches. Compare Repository Directories (see 3.9.6) is the more visual and convenient version of this command. The patch is generated from one Repository and contains the dierence between From and To. The patch will be written to the local Output File. By default, this command takes the ancestry into account. This means, that it does not simply calculate (and print out) the dierence between two les which have the same path, but also checks if both les are actually related. You can decide to switch this behaviour o by selecting Ignore ancestry on the Advanced page. For details regarding the other Advanced options, refer to Section 3.9.10.

3.10

Locks

Since Subversion 1.2, explicit le locking is supported. File locking is especially useful when working with binary les, for which merging is not possible. For each le, its lock state is displayed in the le table column Lock and additionally the Name icon can contain corresponding overlay icons, as shown in Table 2.7. For the list of possible lock states, refer to Table 3.2. Name (Empty) Self Stolen Meaning The le is not locked. The le is locked for the local working copy. The le was locked for the local working copy but in the meanwhile it has been stolen by someone other in the repository. Broken The le was locked for the local working copy, but in the meanwhile it has been unlocked (by someone other) in the repository. (Username) The le is currently locked by the named user. Figure 3.2: Lock States

The Self state can be lled by SmartSVN when scanning the local working copy. Please note, that this state can change, when scanning the repository (see Section 3.10.1), as the lock might actually be Stolen or Broken.

3.10.1

Scan Repository

With Locks|Scan Repository SmartSVN will scan the selected les or all les within the selected directory in the repository for locks. The result is displayed in the le table column Lock. This column is automatically made visible, if necessary. You can combine scanning the repository for locks with refreshing the Remote State (see 3.11) in the Preferences (see 9.7). You can also schedule a recurrent refresh of the repository lock information in the Project Settings (see 7.3.3).

c 2012 WANdisco plc, www.wandisco.com

59

Chapter 3. Commands

3.10.2

Lock

With Locks|Lock you can lock the selected les in the repository. You can enter a Comment, why you are locking these les. The option Steal locks if necessary will lock the requested les regardless of their current lock state (in the repository). In this way it can happen that you steal the lock from another user, what can lead to confusion, when the other user continues working on the locked le. Hence you should use this option only if necessary (e.g. if someone is on holiday and has forgotten to unlock important les). Keep Update to HEAD before selected to perform an update to HEAD. Only the latest revision of a le can be locked.

3.10.3

Unlock

With Locks|Unlock you can unlock the selected les, or all les within the selected directory (recursively) in the repository. The option Break locks will unlock the requested les even if they are not locked locally. In this way it can happen that you break the lock from another users, what can lead to confusion, when the other user continues working on the locked le.

3.10.4

Show Info

Locks|Show Info shows information on the lock state (in repository) of the selected le. State shows the current lock state (see Table 3.2). Token ID is the SVN Lock Token ID, which is normally not relevant for the user. Owner is the name of the user, who currently owns the lock. Created At is the time, when the lock has been set. Expires At is the time, when the lock will expire. Needs Lock indicates, whether this le needs locking, i.e. the Needs Lock property is set (see Section 3.10.5). Comment is the lock comment, as entered by the user at the time of locking.

3.10.5

Change Needs Lock

With Locks|Change Needs Lock les can be marked/unmarked to require locking. This is useful to indicate users, that they should lock the le before working with it. One aspect of this indication is, that SmartSVN will set les which require locking (due to this property) to read-only when checking out or updating.

3.11

Remote State

The remote state shows the les repositories states compared to the local working copy. It can also be interpreted as the action that would happen when updating the working copy to HEAD (see Section 3.3.1). The remote state of les is displayed in the le table column Remote State, the remote state of directories is displayed in the tooltip for a directory. See Table 3.3 for the list of possible remote states of les and directories.

c 2012 WANdisco plc, www.wandisco.com

60

Chapter 3. Commands Name Unchanged Meaning The local entry is equal to the latest revision of this entry in the repository. An update on this entry will bring no changes. Modied For the local entry there exists a newer revision in the repository. An update will bring the corresponding changes for this entry. Removed The local entry has been removed in the repository. An update will remove the entry locally. Added This entry does not exist locally, currently in a versioned state. An update will add this entry. Obstructed For the local entry the latest repository revision contains another entry for being added. An update will fail here. Figure 3.3: Remote State Types

To display the complete remote state information, especially the Will be added state, it may be necessary to add directories and les that do not exist locally to the directory tree or the le table. To such directories and les the special local state Remote is assigned, see Table 2.5 and Table 2.1.

3.11.1

Refresh Remote State

With Query|Refresh Remote State SmartSVN will query the repository and compare the latest repository revision with your local working copy. In this way, to each le and directory the corresponding remote state is assigned and displayed in the Remote State column; it will be made visible, if necessary. Refresh Remote State can be combined with the local Refresh and the scanning for locks (see 3.10.1) in the Preferences (see 9.7) to have the Remote State automatically be refreshed. If problems during the Remote State refresh are encountered, the status bar (see 2.1) will display an Error in the Refresh area. The tooltip for this area will show more details regarding the encountered problem.

3.11.2

Clear Remote State

Use Query|Clear Remote State to clear and hide the remote state. This will remove all directories and les which have the local state Remote (see Table 2.5 and Table 2.1) and hide the Remote State le table column.

3.12

Change Sets

A Change Set is a group of committable les and directories, with a message assigned. Subversion itself supports Changelists which currently can contain only les. SmartSVN automatically synchronizes the les of a Change Set with the corresponding SVN changelist. Change Sets are also known as prepared commit in other version control systems. c 2012 WANdisco plc, www.wandisco.com 61

Chapter 3. Commands Change Sets are displayed in the Directory Tree (see 2.4) below the normal project directory structure. Table 3.4 shows the icons which are used for Change Set directories. Icon Description Change Set root node Change Set root node, which contains the modied project root directory A virtual Change Set directory, which does not represent an actual project directory, but is necessary to display child directories and les. (various) A Change Set directory which represents (or is equal to) the corresponding project directory, see Table 2.1. Figure 3.4: Change Set icons

You can create a Change Set by selecting the les/directory to assign to the Change Set and invoking Change Set|Move to Change Set (Section 3.12.1). You can use the same menu item to add more committable les/directories to the Change Set, to move the selected les/directories to a dierent Change Set or to remove les/directories from a Change Set. When you are ready to commit, you can simply select the Change Set in the directory structure and invoke Modify|Commit (Section 3.5). When the project directory structure is selected (as opposed to a Change Set), deactivating View|Files Assigned to Change Set (Section 2.4) will give a better overview of changed les not already assigned to a Change Set. Note A le/directory can only be assigned to one Change Set.

3.12.1

Move to Change Set

Use Change Set|Move to Change Set to change the assigned Change Set (see 3.12) of selected, committable les/directories. To move the selected les/directory to a new Change Set, select New Change Set and enter the Message of the new Change Set. Select Remove this Change Set once it gets empty to automatically remove this Change Set once it gets empty. Select Allow only committable entries to automatically remove unchanged and other non-committable entries from Change Sets. Example When having Remove this Change Set once it gets empty and Allow only committable entries selected, the Change Set will be automatically removed after committing it because the committed les will turn their state into unchanged after the commit and hence will be removed from the Change Set and the Change Set will be empty and hence will be removed itself. c 2012 WANdisco plc, www.wandisco.com 62

Chapter 3. Commands To move the selected les/directory to another, already existing Change Set, select Existing Change Set and choose the Target Change Set. To remove the selected les/directory from their currently assigned Change Set, select Remove from Change Set. Tip You can use Drag-and-Drop to move les to a Change Set.

3.12.2

Move Up

Use Change Set|Move Up to move the selected Change Set (see 3.12) one position up (when having multiple Change Sets).

3.12.3

Move Down

Use Change Set|Move Down to move the selected Change Set (see 3.12) one position down (when having multiple Change Sets).

3.12.4

Delete

Use Change Set|Delete to delete the selected Change Set (see 3.12). This will only aect the Change Set assignment, not the les nor their SVN state.

3.12.5

Edit Properties

Use Change Set|Edit Properties to change the Message and other properties of the selected Change Set (see 3.12). For details, refer to Section 3.12.1.

3.13

Tools

The Tools menu oers several tools/utilities which can be useful when working with SVN projects.

3.13.1

Export Backup

Use Tools|Export Backup to export a backup of the selected les/directory. Export displays what will be exported. Relative To displays the common root of all les to be exported and the exported les paths will be relative to this directory. Depending on the selection of les/directory this will either be the number of les being exported or All les and directories. You can either export Into zip-le or Into directory. In both cases, specify the target zip le or directory, and optionally choose to Wipe directory before copying. Select Include Ignored Files or Include Ignored Directories if you want to include the respective ignored items (and their contents) as well.

c 2012 WANdisco plc, www.wandisco.com

63

Chapter 3. Commands

3.13.2

Conict Solver

Use Tools|Conict Solver to start a Three-Way-Merge, which can be invoked on conicting les (see Table 2.5). For details, refer to Section 8.5. When invoking this command on a binary le, it will bring the Mark Resolved (see 3.4.14) dialog.

3.13.3

Set Up Local Repository

Use Repository|Set Up Local Repository to set up a new local SVN repository and optionally svnserve to access this repository. To use this command you need to have a local installation of the Subversion command line binaries. You can download them from http://subversion.tigris.org. Its recommended to have these binaries and the necessary libraries on your operating system path. Enter the full path to svnadmin and svnserve. Note When proceeding with Next SmartSVN will perform some basic correctness checks on the chosen les by executing svnadmin --version and svnserve --version, respectively. Later on SmartSVN needs to be able to execute svnadmin create [repository] and svnserve -d -r [repository-root], respectively.

On the Repository page, enter the New Repository Location where the repository will be created. On the Username page, enter a Username and Password which will have write-access to the newly created repository; anonymous access will be restricted to read-only. Note SmartSVN will congure the le conf/svnserve.conf (in the selected repository directory) to use the password le conf/passwd. Later on you can add users and change usernames and passwords in this le.

After the repository has been created and congured successfully, you may choose to Start svnserve automatically when accessing the repository. Refer to Section 6.1.1 for details. Select Proceed with importing les into the repository to continue with the Import into Repository wizard (see 3.2).

3.14

Common Features

SmartSVN includes a set of common features and UI elements that are shared by various commands.

c 2012 WANdisco plc, www.wandisco.com

64

Chapter 3. Commands

3.14.1

Recursive/Depth options

In directory mode, most commands can work in recursive or non-recursive. By default, SmartSVN oers a basic option Recurse into subdirectories (or a similar name) which lets you either only operate on the directory itself or on all contained les and subdirectories, recursively. Alternatively, you can switch to advanced recursion options in the Preferences (see 9.3). In this mode SmartSVN oers the Subversion depth levels: Only this directory only operates on the directory/le itself. Only le children operates on the directory and its directly contained les. Immediate Children (les and directories) operates on the directory, its directly contained les and subdirectories, but not on les or directories within these subdirectories. Fully recursive operates on the directory, contained les and subdirectories recursively. Hence, having Recurse into subdirectories selected is equivalent to depth Innity while having Recurse into subdirectories deselected is equivalent to depth empty.

3.14.2

Revision input elds

Most input elds, for which you can enter a revision number, support a browse function, which can be accessed by the Select or by hitting <Ctrl>+<Space>-keystroke. A dialog displaying all revisions for the selected le/directory will come up. It shows all revisions, for which the directory has actually been aected and additionally all revisions which correspond to a specic tag, see Section 3.8 for further details. The Revision column shows the revision number or the corresponding tag. The other columns display the revisions Time, Commit Message and Author, respectively. The Path column shows the revisionss root location. The displayed revisions are taken from the Log Cache (Section 5.3), so recent revisions might not be contained in the list. In this case you can use Refresh to update the Log Cache (and implicitly the displayed revisions) from the repository. Browse Revisions at species the peg revision for the location to browse. In general HEAD should be sucient for alive locations. Otherwise, you may select the corresponding Peg Revision. From the Options button you can deselect Stop on copy to list revisions for the selected location even beyond copy-points. Example When merging (see 3.6.1) revisions from replaced (and hence dead) branches, it will be necessary to enter the correct Peg Revision to identify the branch.

c 2012 WANdisco plc, www.wandisco.com

65

Chapter 3. Commands

3.14.3

Repository path input elds

Most input elds, for which you can enter a repository path, support a browse function, which can be accessed by the Browse or by hitting <Ctrl>+<Space>-keystroke. The Repository Browser (Section 4) will come up as a dialog. Depending on the command from which the browser has been invoked, you can either select a repository le and/or a repository directory. For certain commands where necessary peg-revisions are supported. Peg-revisions specify the URL of a repository path. This can be helpful when working with paths which do not exist anymore in the repository. In SmartSVN, you can append a peg-revision to a path by prexing it with a @. Example To specify a path /project/path at revision 91, enter /project/path@91.

3.14.4

Tag input elds

Input elds, for which you can enter a tag, like when using Switch (Section 3.3.4), support a browse function, which can be accessed by the Browse button or by hitting <Ctrl>+<Space>-keystroke. The Tag Browser (Section 3.8.5) will come up to let you select a branch or tag. For certain commands where necessary peg-revisions are supported. For details refer to Section 3.14.3. Example To specify a tag my-tag at revision 91, enter my-tag@91.

3.14.5

File/directory input elds

Input elds, for which you can enter a path to a le or directory, support a browse function, which can be accessed by selecting the Choose button or by hitting <Ctrl>+<Space>keystroke.

c 2012 WANdisco plc, www.wandisco.com

66

Chapter 4 Repository Browser


The Repository Browser oers a direct view into the repository and basic commands to manipulate repository contents directly. The Repository Browser comes as a stand-alone frame. It can be invoked from within the Project Window (see 2) by Repository|Open in Repository Browser or by Window|New Repository Browser. If a tray icon (see 10.8) is present the Repository Browser frame can be invoked by New Repository Browser. The Repository Browser can also be invoked from Project Window (see 2) commands via Repository path input elds (see 3.14.3) and commands like Check Out (see 3.1) or Import into Repository (see 3.2) provide inbound Repository Browsers. The Repository Browser displays the repository content with a Directory tree and a File table, similar to the Project Window (see 2). For details on the File Filter, refer to Section 2.4.2. The repository le system is only scanned on demand. This happens when currently unscanned directories are expanded. The Tag-Branch-Layouts (see 3.8.1) will be used to display directory icons. Table 4.1 shows the possible directory states.

4.1

Repository menu

Use Open to change the currently browsed repository. Either select an already dene Repository Prole or directly enter a Repository URL to browse. Its recommended (though not necessary) to enter repository root URLs. Use Show Revision to change the currently displayed revision. Use Check Out to check out the currently selected directory. This will bring up a simplied Check Out wizard, for details refer to Section 3.1. Use Manage Proles to create a new Repository Prole (see 6) if necessary. Change Master Password, see Section 6.4. Manage Log Caches, see Section 5.3.1. Use Close to close the frame. Use Exit to exit SmartSVN. 67

Chapter 4. Repository Browser Icon State Default Unscanned Root Trunk/Branch Tag Intermediate Details An already scanned repository directory without special meaning. A not yet scanned repository directory. A project root, according to some Tag-Branch-Layout (see 3.8.1). A trunk or branch, according to some Tag-Branch-Layout (see 3.8.1). A tag according to some Tag-Branch-Layout (see 3.8.1). An intermediate directory according to some Tag-BranchLayout (see 3.8.1). For instance the parent directory (container) of the branches. An error has occurred while scanning the repository, only displayed for the root directory. Figure 4.1: Directory States

Error

4.2

Edit menu

Use Stop to cancel the currently processing operation. This action might not be applicable for certain operations. Use File Filter to put the focus into the File Filter eld. Use Congure Layout to congure the Tag-Branch-Layout (see 3.8.1) for the currently selected directory. Use Dismiss Layout to dismiss the Tag-Branch-Layout for the currently selected directory. This can be useful to get rid of a deeper layout in favor of its parent layout. Use Copy Name to copy the name of the selected le/directory to the system clipboard. If multiple les are selected, all names will be copied, each on a new line. Use Copy URL to copy the URLs of the selected le/directory to the system clipboard. If multiple les are selected, all URLs will be copied, each on a new line. Use Set Encoding to congure the encoding which will be used when displaying le contents for the various Query-commands. Refer to Section 7.3.1 for details on when encodings will be applied. The encoding will be stored in the corresponding Repository Prole (see 6). Use Customize to customize accelerators (see Section 9.17). Use Preferences to show the application preferences (see Section 9). c 2012 WANdisco plc, www.wandisco.com 68

Chapter 4. Repository Browser

4.3

View

Use Refresh to explicitly refresh the contents of the Directory tree and the File table from the repository. Select Files from Subdirectories to also view les from within subdirectories of the currently selected directory.

4.4

Modify

Create Directory, see Section 4.4.1. Remove, see Section 4.4.2. Copy, see Section 4.4.3. Move, see Section 4.4.3.

4.4.1

Create Directory

Use Modify|Create Directory to create a new directory in the currently selected directory. Enter the Directory Name which may contain slashes (/) to create multiple directories at once. Select Create default project structure for trunk, branches and tags to also create sub-directories trunk, branches and tags in the created directory. Enter the corresponding Commit Message which is automatically suggested, as long as you dont have manually modied it.

4.4.2

Remove

Use Modify|Remove to remove the currently selected directory(ies) or les from the repository. Enter a corresponding Commit Message, which is automatically suggested based on the selected directory/les.

4.4.3

Copy/Move

Use Modify|Copy or Modify|Move to copy or move the selected les/directory to another location. Select Copy to only copy the les/directory or Move to additionally remove the copy sources afterwards. Use To to copy the copy sources itself to the selected location. When having selected one le/directory the entered destination location must not yet exist. The last part of the destination path will be the new name of the copied le/directory. When having multiple les selected, the les will be copied into the destination path. Use Contents Into to copy the contents of the copy source into the selected location. This option is only available for copying directories. In either case, necessary parent directories will be created automatically. c 2012 WANdisco plc, www.wandisco.com 69

Chapter 4. Repository Browser Enter the corresponding Commit Message which is automatically suggested, as long as you dont have manually modied it. Select After command execution show repository at HEAD revision to reset the Repository Browsers revision to HEAD after having performed the copy or move command. This option is only available if the current revision not set to HEAD and it is convenient to immediately see the copy results (in HEAD). Tip You can also use Drag-And-Drop to copy or move les and directories. This will open the same dialog with the corresponding paths pre-lled.

4.5

Query menu

Use Open to open the currently selected le. SmartSVN will check out the le to a temporary location and open it in the specied editor. For details refer to the corresponding Open (see 2.5.7) command in the Project Window (see 2). Use Compare on a selection of two les or two directories to compare their contents. For details refer to Section 3.9.1 and Section 3.9.6, respectively. Use Log to display the log for the currently selected directory or le. For details refer to Section 3.9.7. Use Revision Graph to display the revision graph for the currently selected directory or le. For details refer to Section 3.9.8. Use Annotate to display an annotated view of the currently selected les content. For details refer to Section 3.9.9. Use Save As to save the contents of the selected le to a local le. Enter the Target Path and select whether to Expands keywords or leave them unexpanded (as they are in the repository). Use Show Properties to display the properties of the currently selected le or directory.

4.6

Window menu

Refer to Section 2.5.12 for more details.

4.7

Help menu

Refer to Section 2.5.13 for more details.

c 2012 WANdisco plc, www.wandisco.com

70

Chapter 5 Transactions
The Transactions are a direct view into a repositories Log which is continuously updated. The Transactions are primarily designed to keep you up-to-date on what has happened within repositories you are interested, but also to allow similar powerful queries as the Log command (see 3.9.7) itself. The Transactions are integrated into the Project Window (see 5.2) and they come as a stand-alone Transactions frame (see 5.1).

5.1

Transactions frame

The Transactions frame can be invoked from within the Project Window (see 2) or from within the Repository Browser (see 4) by Window|Show Transactions. If a tray icon (see 10.8) is present the Transactions frame can be invoked by Show Transactions. The Transactions frame can be used to observe multiple repositories at the same time. Every revision of every repository is represented by one line in the transactions tree which can be expanded to see which les/directories have been aected by the corresponding revision. Note For repositories in an older format than Subversion 1.6, the received log data does not contain information on whether a changed entry is of le or directory type. Hence, all entries modied in a revision will be displayed using le icons (even they might be directories).

A revision line primarily shows the commit message of the corresponding revision and has a prex which shows various properties of that revision: Root: displays to which repository the revision belongs. This column is only present if multiple repositories are observed, refer to Section 5.1.2 for details. The column may also contain the project name, appended after a colon (:). The project name is the last path component of the project root of the corresponding TagBranch-Layout (see 3.8.1). Revision Number: Displays the revision number. Time: Displays date and time of the revision. The used format can be changed in the Preferences (see 9.3). 71

Chapter 5. Transactions Trunk/Branch/Tag: displays the corresponding trunk, branch or tag to which the revision belongs, refer to Section 3.8.1 for details. This column is only present if at least one of the displayed revisions actually belongs to a trunk, branch or tag. Author: Displays the revisions author. File count: Displays the number of modied les/directories the revision contains. The changed les/directories for a revision are displayed relative to the corresponding Trunk/Branch/Tag of the revision, or relative to the Roots URL in case no Tag-BranchLayout is used. If a Tag-Branch-Layout is used, but a le path does not t into the Tag-Branch-Layout, it will be prexed by a / to denote that it is given relative to the Root.

5.1.1

Grouping of revisions

Use the View to group the revisions by dierent categories: Ungrouped Weeks Time Authors Location (repository)

5.1.2

Watched URLs

Use Edit|Congure Watched URLs to congure the observed URLs (i.e. repositories). Every entry must have a Name which will be displayed in the Root column of the revision line prex to distinguish revisions from dierent repositories. All revisions below the Root URL will be observed. Select to Display revisions for the last entered days. You can further limit the number of displayed revisions by But at. Choose Least to have at least the specied number of Revisions reported. If there have been less revisions within the last days the display period will be extended so that at least the specied number of revisions are displayed. If there have been more revisions within the last days, this option wont aect the display. Choose Most to have at most the specied number of Revisions reported. If there have been less revisions within the last days, this option wont aect the display. If there have been more revisions within the last days the display period will be shrinked so that at most the specied number of revisions are displayed.

c 2012 WANdisco plc, www.wandisco.com

72

Chapter 5. Transactions Note For large and/or highly active projects, using a large value for Display period without a reasonable Most restriction can require signicant memory usage and computational resources.

The watched URLs can be refreshed manually by Transaction|Refresh and they will be refreshed recurrently for the interval specied in the Preferences (see 9.12). Icon State Default (read) Unread Remote Details A (read) revision. An unread revision. A working copy revision which contains at least one le which will be updated when updating to HEAD. Figure 5.1: Revision states

5.1.3

Read/Unread revisions

SmartSVN internally manages for every repository a list of which revisions are Unread and which revisions have already been Read. This mechanism is similar to email clients: Newly fetched revisions are considered as Unread and hence are displayed with a blue color. In addition they will have a dierent icon, for details refer to Table 5.1. Use View|Mark as Read or View|Mark All as Read to mark revisions as read. The read/unread state of revisions is not related to a single Transactions view, but shared by all views. For instance, multiple Project Window transactions (see 5.2) and the Transactions frame itself may show the same repositories. Marking a revision as read/unread will change their state in all of these views.

5.1.4

Display Settings

The layout of the revision line prex can be congured in the Display Settings. Choose whether to show Time, Author, File count and/or Trunk/Branch/Tag. Choose whether to have the layout Compact or Aligned in columns.

5.1.5

Transaction menu

Use Refresh to refresh the log information for the Watched URLs (see 5.1.2). Use Close to close the frame. Use Exit to exit SmartSVN.

c 2012 WANdisco plc, www.wandisco.com

73

Chapter 5. Transactions

5.1.6

Edit menu

Use Stop to cancel the currently processing operation. This action might not be applicable for certain operations. Use Open to open the currently selected le. SmartSVN will check out the le to a temporary location and will open it in the specied editor. For details refer to the corresponding Open (see 2.5.2) command in the Project Window (see 2). Use Copy Message to copy the commit message of the currently selected revision. If multiple revisions are selected, all messages will be copied, each on a new line. Use Copy Path to copy the relative paths of the currently selected les. If multiple les are selected, all les will be copied, each on a new line. Congure Watched URLs, see Section 5.1.2. Use Customize to customize accelerators (see Section 9.17). Use Preferences to show the application preferences (see Section 9).

5.1.7

View menu

Mark as Read, see Section 5.1.3. Mark All as Read, see Section 5.1.3. Ungrouped Revisions, see Section 5.1.1. Grouped by Weeks, see Section 5.1.1. Grouped by Time, see Section 5.1.1. Grouped by Author, see Section 5.1.1. Grouped by Location, see Section 5.1.1. Settings, see Section 5.1.4.

5.1.8

Modify menu

Change Commit Message, see Section 8.7.4.

c 2012 WANdisco plc, www.wandisco.com

74

Chapter 5. Transactions

5.1.9

Query menu

Use Show Changes to display the changes for the selected le or revision. For details refer to Section 3.9.1. Use Log to display the log for the currently selected revision or le. For details refer to Section 3.9.7. Use Revision Graph to display the revision graph for the currently selected revision or le. For details refer to Section 3.9.8. Use Annotate to display an annotated view of the currently selected les content. For details refer to Section 3.9.9. Use Save As to save the contents of the selected revision/le to a local le, for details refer to (see 4.5).

5.1.10

Repository menu

Manage Proles, see Section 6. Change Master Password, see Section 6.4. Manage Log Caches, see Section 5.3.1.

5.1.11

Window menu

Refer to Section 2.5.12 for more details.

5.1.12

Help menu

Refer to Section 2.5.13 for more details.

5.2

Project Transactions

The Project Transactions are displayed in the Transaction view which is by default located in the lower right area of the Project Window (see 2). The Project Transactions view provides virtually all features of the stand-alone Transactions Frame (see 5.1) and extends some of them. Many commands available in the Project Transactions view are integrated into the various Project Window commands (see 2), for instance Log (see 3.9.7) transparently works on the the project les and directories as well as on Transaction revisions or les. The Transactions-specic commands can be found in the Window|Transactions menu, see Section 2.5.12. The main dierence compared to the Transactions frame is that those revisions which are related to the current working copy (called working copy revisions) are implicitly

c 2012 WANdisco plc, www.wandisco.com

75

Chapter 5. Transactions displayed; similar to the Transactions frame further watched URLs can be congured by Transactions|Congure Watched URLs. For working copy revisions, their read/unread (see 5.1.3) state is tracked but not displayed in the Project Transactions. Instead, based on the local working copy state, the remote state for every revision is evaluated and displayed correspondingly: If a revision has already been updated its simply displayed as read. If there is at least one le part of the revision which will be updated when updating (see 3.3.1) to HEAD the revision is displayed as read, containing a green arrow, see Table 5.1.

5.2.1

Settings

Select Transactions|Settings to congure the Project Transactions. Select Repeatedly refresh transactions to refresh the working copy transactions recurrently, with the same interval as for the Transactions frame. Select Refresh after loading project to automatically refresh the working copy transactions after a project has been loaded. Select Refresh after a command changed the working copy to automatically refresh after Updates, Commits, etc. Regarding the basic Display options, refer to Section 5.1.4. Display revisions for the last and But at refer to the working copy revisions; the meaning of these options is identical to the additionally watched URLs, for details refer to Section 5.1.2.

5.3

Log Cache

The Log Cache is the local data storage for the Transactions. It is also used by other SmartSVN commands, for instance the Log command (Section 3.9.7) itself. It stores and supplies the raw log information as received from the server and can supply them for various commands later on. This can increase log performance signicantly and also leads to reduced network trac. When Log information is requested for the rst time for a certain repository, you can choose which parts of the repository should be indexed by the Log Cache. In general it is recommended to select Create cache for whole repository at to let SmartSVN index the whole repository. The reason is that logs of a certain module can have links to other modules, because of the way Subversions Copy mechanism works. Sometimes repositories can be very large and you are interested only in a few modules of the whole repository. In this case it may be more ecient to select Create cache only for module at and select the corresponding module. However, this can lead to incomplete logs due to the reasons stated above. For some repositories you might want to use create no Log Cache at all. In this case choose Skip cache and perform logs directly. SmartSVN automatically keeps the Log Cache(s) up-to-date. All log-related commands always query the repository for the latest logs, before querying the Log Cache. In the same way, every manually or automatically triggered refresh of the Transactions will update the corresponding caches. Log results (for instance used by the Log command) from the Log Cache are in general identical to results obtained when querying the server directly. However there can be

c 2012 WANdisco plc, www.wandisco.com

76

Chapter 5. Transactions dierences for following situations: Server-side access restrictions on already cached revisions are changed afterwards. This happens for instance, when using and modifying AuthzSVNAccessFile for HTTP repositories. Log information for already cached revisions are changed on the server afterwards. This happens for instance when changing the repositorys database directly or by changing revision properties, e.g. when another user has performed Change Commit Message (see 8.7.4). In such cases, you should rebuild the Log Cache as described in Section 5.3.1.

5.3.1

Manage Log Caches

In the Project Window (see 2) use Repository|Manage Log Caches to manage the local Log Caches. The list shows all known Root URLs and the corresponding Log Type. For Log Type set to Local Log Cache there exists a local Log Cache for the Root URL against which logs will be performed. Otherwise, for Direct Logs onto Repository, the logs will be performed directly against the repository. Log Caches are created on demand for a new Root URL and the choice whether to use a Local Log Cache or Direct Logs onto Repository has to be done when a log is rst requested for that URL. This choice will be remembered and typically doesnt need to be changed afterwards. If necessary anway, you can use Delete for the corresponding Root URL. This will discard the Log Type choice and get rid of the Log Cache in case of Local Log Cache choice. Hence, subsequent log requests for this URL (or child URLs) will bring the Log Cache initialization dialog again. Select Rebuild for a Local Log Cache to rebuild it from repository log information. In general its recommended to rebuild caches completely by selecting All unless you know that only log information Starting with a certain revision had been changed.

5.3.2

Storage

The Log Cache information is stored in the subdirectory log-cache in SmartSVNs settings directory. For every Log Cache, there is a separate subdirectory containing the server name and repositoy path. This is typically sucient to quickly locate the cache for a specic repository. In case there are multiple subdirectories with the same name, only diering and the trailing number, you can have a look at the contained urls les. They show the exact location for which the Log Cache has been built. If you encounter problems when rebuilding the cache, or if you need to get rid of the cached information for a certain repository, you can remove the corresponding subdirectory. Alternatively, you can remove the whole log-cache in order to get rid of all cached log information. You should never change these les while SmartSVN is running, otherwise the results will be unpredictable.

c 2012 WANdisco plc, www.wandisco.com

77

Chapter 6 Repository Proles


The Repository Proles contain all settings which are required to establish a connection respectively authenticate to a repository. SmartSVN automatically creates a new prole, when opening a working copy, which contains a currently unknown repository URL. Typically, such proles are not fully congured, because there are additional usernames, passwords or certicates required for a successful authentication. When commands are invoked, which are connecting to the repository, SmartSVN will query for this additional information. Alternatively (and important for checkouts) the Repository Proles can be congured from the Project Window (see 2) and from the Repository Browser (see 4) by Repository|Manage Proles.

6.1

Proles

On the Proles page, you can congure the main connection settings (i.e. proles). The table shows all currently known proles. You can Add, Copy, Edit or Delete a prole. The proles are arranged in a specic, customizable order. This order is used for prole selectors, used within various dialogs. It also aects the search for a matching prole, when connecting to a repository; the list is searched from top to bottom. In this way you can create multiple proles for one repository with dierent settings, e.g. authenticated access for certain subdirectories and anonymous access for the whole repository. To change the order of the proles, use Move Up and Move Down. Use Sort By to sort the proles either based on their given Name or on their Location (host name); latter option will keep the order between proles for the same host. Use Show Passwords to add an additional Password/Passphrase column which displays the stored plain text passwords for each prole. For details on passwords refer to (see 6.4). Tip The column Last Used At shows the last time the Prole has been used for authentication against a repository. This time stamp can be helpful to detect obsolete proles which may be removed after a while.

78

Chapter 6. Repository Proles

6.1.1

Add

By Add a wizard will come up, which lets you supply all necessary information to create a new prole. Conguration On the Location page you have to primarily specify which Protocol (protocol) shall be used to access the repository. In case of SVN+SSH, you can optionally specify whether to Prepend SSH login name to host. This option is not important for SmartSVN but may be convenient when also working with the command line. Further mandatory parameters of a prole are Server Name, Repository Path and Server Port. For the Server Port you have the option to use the Default port, or use a Non-Default port. Note The Repository Path is interpreted dierently depending on the Protocol. For HTTP, HTTPS it denotes the Location as specied in Apaches httpd.conf (or child conguration les). For SVN it denotes the path relative to the repository root, which svnserve serves; you will typically simply use / here. For SVN+SSH it denotes the absolute le system path to the repository, i.e. the same path which you would supply for the svnserve -r parameter.

Instead of typing the values into the various input elds, you can also use Enter SVN URL and supply the complete URL for the repository. Details Depending on the selected Protocol, there are dierent options which have to be congured on the Details page. Most of them are related to authentication. SVN For SVN connections, you have to specify the SVN Login. This can either be Anonymous or by User Name and Password. In the latter case you have to supply the User Name and Password. The Password can optionally be stored by Save password, see also Section 6.4. If you are connecting to a local repository, i.e. either localhost or 127.0.0.1, you can choose to Automatically start svnserve. In this case, specify the local Repository Directory and the path to the svnserve-Executable. SmartSVN will then always try to start the corresponding svnserve process at the specied port before accessing this repository.

c 2012 WANdisco plc, www.wandisco.com

79

Chapter 6. Repository Proles Note For the autostarting of svnserve to work properly, its necessary that anonymous read access for the corresponding repository has been congured. Before the process is started, SmartSVN checks for already running processes. Only if no running processing (serving the correct repository) has been found, SmartSVN will launch its own svnserve process. These processes will be shutdown automatically with the shutdown of SmartSVN itself. If SmartSVN is not shutdown gracefully, the svnserve processes will remain running and hence have to be shutdown manually.

HTTP For HTTP connections, you have also to specify the SVN Login and you can optionally choose Use Proxy to connect via the specied proxy server (see Section 6.2 for more details). HTTPS For HTTPS connections, you have to specify the same parameters as for HTTP connections. Furthermore you have the option to Use client authentication if this is required by your SSL server. In this case choose the required Certicate File and enter the corresponding Certicate Passphrase which is used to protect your certicate. You can optionally Save passphrase, see also Section 6.4. SVN+SSH For SVN+SSH connections, you have to specify a Login Name for the SSH login and you have following Authentication options: For Password-Authentication, enter the corresponding password. You can optionally Save password, see also Section 6.4. For Public/Private-Key-Authentication, enter the path to your Private Key File and the Passphrase, which is used to protect your Private Key. You can optionally Save passphrase. For Tunnel, select the corresponding Tunnel. For more details regarding tunnels, refer to Section 6.3. When working over SVN+SSH, the username used for commit messages, etc. will default to the Login Name. If you prefer to use another name here, choose Custom for SVN User Name and enter the corresponding name. Finally and common for all Protocols you can choose to Verify connection when pressing Next, which is recommended. Name The Name page shows the nal URL for the prole to be created. For displaying on the UI, a name is assigned to every prole. Choose either Use repository URL as prole name or Use following prole name and enter a corresponding name. Click Finish to create the prole. c 2012 WANdisco plc, www.wandisco.com 80

Chapter 6. Repository Proles

6.1.2

Edit

When editing a prole, you can change almost all parameters which also can be entered when creating a new prole.

6.2

Proxies

On the Proxies page, you can congure proxy hosts which are used to connect to SVN repositories over HTTP/HTTPS protocol. The congured proxies can then be used within a Repository Prole. For a proxy conguration you have to specify the congurations Name and the proxy Host and Port. For Login, select either Anonymous if the proxy itself requires no authentication or User Name and Password. In the second case, specify the required Username and Password. You can choose to Save password, see also Section 6.4.

6.3

Tunnels

On the Tunnels page, you can congure custom svn+ssh tunnels. Tunnels are useful when already having a working SSH infrastructure which also handles authentication and communication. The congured tunnels can then be used within a Repository Prole. A tunnel has a Name, a tunnel Command and Parameters for this command. The Command typically is an ssh executable, like PuTTYs plink.exe on Microsoft Windows or ssh on Unix and Apple Mac OS. The tunnel command is always invoked when an svn+ssh connection is set up and handles the complete SSH-communication between SmartSVN and the server. The Parameters can contain predened variables which are expanded by concrete values from the corresponding Repository Prole on the tunnel invocation: Host: The host name of the server Port: The port number on the server SSH Login Name: The login name on the server svnserve Start Command: The command to start the svnserve process. Either this variable or the actual start command must occur in the Parameters denition.

6.4

Passwords

All passwords which are required to access repositories can optionally be stored in a special password store. This password store is located in the password le, which can be found in SmartSVNs conguration area (see Section 12). The password store is protected by a Master Password which has to be dened for the very rst access of the password store. After relaunching SmartSVN the master password has to be entered when SmartSVN reads the password store the rst time. You c 2012 WANdisco plc, www.wandisco.com 81

Chapter 6. Repository Proles may choose to Dont use a master password, if you dont want to have the password store protected. However, this option is only recommended if you can make sure that the master password le itself is well protected against unauthorized access. The master password can be (re)set or changed by Repository|Change Master Password from within the Project Window (see 2.5.10). Use either Change master password to change the current password; this will preserve the stored passwords, but requires that you can supply the Current Master Password. Note that you wont need to enter the Current Master Password, if you are working without a master password currently. If you have forgotten the master password, select Set new master password. In that case all previously stored passwords are lost. Enter the New Master Password and Retype New Master Password. When leaving both elds blank, you will continue to work without a master password, i.e. like having Dont use a master password selected when initially asked to set the master password.

c 2012 WANdisco plc, www.wandisco.com

82

Chapter 7 Projects
SmartSVN internally manages your SVN working copies in SmartSVN projects. A SmartSVN project points to one or more SVN working copies (local SVN-controlled directories) and has a name and settings (Section 7.3) attached to it. When working with SmartSVN, you are always working with a project. Projects can be created in dierent ways from the Project menu. To create a completely new project from a not-yet-version-controlled local directory, use Import into Repository (see Section 3.2). This will also create the corresponding directory (module) in the repository. If you want to create a local working copy from a project which already exists in a repository, use Check Out (see Section 3.1).

7.1

Managing working copies

To create a project from an already versioned local directory, use Open Working Copy and specify the locally Versioned Directory. On the Project page, you may select to Open in new project for this working copy, specify the projects name and specify an optional group (see Project Manager (see 7.2)) to which the project will be added. You may select Add to current project to add the working copy to the currently open project (if present). If there already exists a project which contains this working copy, you may select Open existing project to open this project. Or you may select Dont manage as project to just create a temporary project for this working copy. If the location of a working copy has changed, you may use Edit Working Copy to point to the new location. To remove a working copy from the project, use Remove Working Copy. Note For an advanced conguration of the working copy roots use the project settings (see 7.3).

One Project Window shows one project at a time. To work with multiple projects at the same time, you can open multiple Project Windows by clicking Window|New Project Window. Already existing projects can be opened in a Project Window by Open or closed by Close.

83

Chapter 7. Projects

7.2

Project Manager

With the Project Manager (Project|Project Manager) you can manage your existing SmartSVN projects. The set of managed projects is arranged in a tree-structure. This allows you to group related projects under a common group name, etc. The project tree is displayed for the Project|Open dialog and the directory trees pop-up in the Project Window. Tip There is one special group Sorted project area which receives all new projects. This group is sorted and hence works like a sorted project-list. If you dont need to group projects, simply leave this group mainting the project list for you.

You can Add a new project. This button has the same eect as Project|Open Working Copy. Select the local SVN-controlled root directory of the working copy for which you want to add a project and specify the corresponding Project Name. Its recommended to also choose Verify repository connection to make sure that the corresponding repository is still valid and can be accessed. With Rename you can change the Name of an already managed project or a group. Choose Reset to reset the settings of the selected projects to the default settings (see 7.3.4). Use Delete to remove projects from project tree; neither the local directory itself nor any other lesystem content will be aected by this operation. You can rearrange the project tree directly by Drag-and-Drop which is the most convenient method. Alternatively use Move Up and Move Down to move single nodes in the hierarchy. If a group is expanded, you can move the currently selected item into this group, otherwise it will be moved across. Use Create Group to wrap the currently selected project in a group. Thereafter you can move other projects into this group. When you Delete a group, only this group will be deleted, but not contained projects nor groups.

7.3

Project Settings

The project settings aect the behaviour of various SVN commands. Contrary to the global preferences (see Section 9), the project settings only apply to an individual project. You can edit the settings of the currently opened project by Project|Settings. The top of the dialog shows the Root Paths for the current project. Use Change to modify these paths, e.g. to either add other root directories or to change a root directory after the corresponding SVN working copy has been moved on your local disk.

7.3.1

Text File Encoding

The text le encoding aects only the presentation of le contents, for instance when comparing a le (see Section 3.9.1) and it will only be used if for the le itself no charset has been specied by its MIME-Type property (see 3.7.3). The text le encoding settings are not relevant for SVN operations itself, which generally work only on the byte-level. c 2012 WANdisco plc, www.wandisco.com 84

Chapter 7. Projects With Use systems default encoding, SmartSVN will automatically use the systems default encoding when displaying les. When changing the system encoding later, the project settings are automatically up-to-date. Alternatively you can choose a xed encoding by Use following encoding.

7.3.2

Refresh/Scan

The Initial Scan settings species, whether SmartSVN scans the Whole project or the Root directory only when opening a project. We recommend in general to use the Whole project option, because features like searching les in the table, etc. are relying on having the whole project structure in memory. Nevertheless, when you are working with large projects, it can be necessary to scan the le structure only on demand to avoid a high memory consumption.

7.3.3

Working Copy

The option (Re)set to Commit-Times after manipulating local les advises SmartSVN to always set a local les time to its internal SVN property commit-time. Especially in case of an updating command (see Section 3.3), this option is convenient to get the actual change time of a le and not the local update time. Apply auto-props from SVN cong le to added les advises SmartSVN to use the auto-props from the SVN cong le, which is located in the Subversion directory below your home directory. These auto-props will also override other project defaults, like Default EOL Style, explained below. Choose Keep input les after merging to always keep the auxiliary les (left, right and base) after a le has been merged by the Merge (see 3.6.1) or by the Merge from 2 sources (see 3.6.2) command. These les will be put into merged state (see Table 2.5) which is similar to the conict state however without having actual conicts. For merged les you can use the Conict Solver (see 8.5) to review merge changes in detail and you can nally use Mark Resolved (see 3.4.14) to mark the le as resolved and to get rid of the auxiliary les. Global Ignores The Global Ignores dene global ignore patterns for les/directories which should in general be ignored within the current project. This is contrary to local ignores (see Section 3.7.8), which are only related to a specic directory. You can completely deactivate Global Ignores by Deactivated. With Use from SVN cong le, the same ignore patterns will be used as by the command line client. To be independent of the command line client, you can enter your own patterns by Use following patterns. The Patterns are le name patterns, where * and ? are wildcard symbols, interpreted in the usual way. Binary Files Choose Use MIME-type registry from SVN cong le to use the corresponding le which is also used by the command line client. Choose Use following patterns to specify c 2012 WANdisco plc, www.wandisco.com 85

Chapter 7. Projects custom Patterns, for which matching les will always be added (see 3.4.1) with binary MIME-type (see 3.7.3). The wildcard symbols * and ? can be used in the usual way. EOL Style This option species the EOL style default, which is used when adding a le (Section 3.4.1). For more details refer to Section 3.7.4. Use In case of inconsistent EOLs to congure the behavior when adding a le with inconsistent EOLs (line endings). Add As Is will automatically add the le with EOL style As Is. Add as Binary will automatically set the les type to Binary, see also Section 3.7.3. Report Error will report an error. EOL Style Native Usually text les are stored with native EOL-Style (see 3.7.4) in the SVN repository. As a result after performing SVN operations on these les your platforms native line separator will be used (Platform). Under certain circumstances it can be convenient to redene what native means, e.g. when a project is operated on Windows OS, but frequently uploaded to a Unix server. This redenition can be done here by choosing the desired Native EOL-Style. Locks Use Set Needs Lock for to specify for which les the Needs Lock (see 3.10.5) should be set when they are added. With No le, the Needs Lock property will be set to no le. With Binary les the property will only be set to les, which have been detected to have binary content. With Every le the property will be set to every le. When committing (see 3.5) les or directories, SmartSVN will scan for locked les. Choose here whether to suggest to Release Locks or to Keep Locks for those les on the Locks page of the commit wizard. Enable Automatically scan for locks and enter the corresponding interval in minutes to recurrently refresh the les lock states. Refer to Section 3.10.1 for details. Keyword Subst. This option species the Keyword Substitution default, which is used when adding a le (Section 3.4.1). For more details refer to Section 3.7.5. Conicts By default, conicting les will receive new extensions like mine or .r4711. Here you can specify extensions which should be preserved in case of conicts. Choose either Use from SVN cong le or Use following extensions and enter the le name Extensions which should be preserved.

c 2012 WANdisco plc, www.wandisco.com

86

Chapter 7. Projects

7.3.4

Default Settings

Projects are created by various commands. For reasons of simplicity, in most of these cases, there is no conguration possibility for the corresponding project settings. Therefore you can specify default project settings (template settings), which will be applied to every newly created project. With Project|Default Settings you can congure the same properties as for a concrete project.

c 2012 WANdisco plc, www.wandisco.com

87

Chapter 8 Subwindows
Many commands are resulting in stand-alone sub-windows with their own functionality and purpose.

8.1

Text Editor

The Text Editor window shows the contents of a text le and allows modications of the le. The Text Editor is typically invoked by Edit|Open from the Project Window (unless an external editor has been specied in the Preferences (see 9.11)).

8.1.1

Settings

The Tab Size species the width (number of characters) which is used to display a TAB character. With Show whitespaces whitespace characters will be displayed. With Show line numbers a line number gutter will be prepended. Select Make default to have the selected options apply to all File Compare frames. For basic settings regarding text components, refer to Section 9.9.

8.1.2

File menu

Use Save to save the le. Use Save As to save the le under a new name. Use Close to close the frame.

8.1.3

Edit menu

Contains common functions to alter the le contents and to nd a certain text within the contents. Use Customize to customize accelerators (see Section 9.17).

88

Chapter 8. Subwindows

8.1.4

View menu

Settings, refer to Section 8.1.1 and Section 9.9.

8.1.5

Go To menu

Use Go to Line to go to the specied Line Number.

8.1.6

Window menu

Refer to Section 2.5.12 for more details.

8.2

File Compare

The File Compare window shows the contents of two les, one in the left and one in the right area of the window. A File Compare is typically invoked by Query|Show Changes from the Project Window (see 2) but there are various other ways/windows to invoke a File Compare in SmartSVN. Together with a File Compare, a Properties Compare (see 8.3) can be invoked, if properties of the les to compare are dierent as well. Note Depending on your File Comparator settings (see 9.10), performing a le comparison can also invoke an external le compare tool. This section refers only to the built-in File Compare of SmartSVN.

Depending on the source of the compared les (local working copy, repository), none, only the right, or both contents may be editable. Depending on the invoking command, when a copied le is compared and the copy source le is removed, the pristine copy of the source le will be used for the comparison if its contents are available. Tip If the le compare refuses to compare a le because its binary, check the corresponding MIME-Type (see 3.7.3) property. Regarding the used encoding, refer to Section 7.3.1. You can also congure to the set MIME-Type and auto-detect the type in the File Comparator settings (see 9.10).

8.2.1

Comparison

The le contents are compared line-by-line, where the underlying algorithm nds the minimum number of changed lines between the left and the right content. The dierences between left and right content is highlighted by colored regions within the text views, which are linked together in the center Link Component. The Link Component allows to take over changes from one side to the other, depending on which side is editable. Tip When the mouse is positioned over the Link Component, you can use the mouse wheel to jump from dierence to dierence. 89

c 2012 WANdisco plc, www.wandisco.com

Chapter 8. Subwindows Depending on the Preferences (see 9.9), not only complete lines, but also the content within lines is compared if they are not too dierent. These comparison results in innerline changes. You can take over such changes from left to right or vice versa with Apply Left and Apply Right, respectively, from the popup menu (invoked on the change itself). Regarding the following menus, many of the available operations are working on the active view, i.e. the view which has the focus and/or displays the cursor.

8.2.2

Settings

Regarding the General settings, refer to Section 8.1.1. For basic settings regarding text components, refer to Section 9.9. If Ignore whitespace for line comparison is selected, two lines are treated as equal, if they only dier in the number, but not in the position of whitespaces. If Ignore Case Change for line comparison is selected, uppercase and lowercase characters are treated as equal. The Inner Line Comparison species the tokenizing algorithm of the lines, for which the individual tokens within two lines will be compared against each other. Alphanumeric words results in tokens, which form alphanumeric words, i.e. words, which are consisting only of letters and digits and which are starting with a letter. All other characters are considered as tokens on their own. Character-based treats every character as a single token. This is the most ne-grained comparison option. C identiers and Java identiers are similar to Alphanumeric words, but in addition to letters and digits certain other characters are allowed to be part of a single token. O completely disables the inner line comparison, i.e. every line is considered as single token. With Trim equal start/end of Inner-Line changes selected and two tokens being dierent, the equal starting and ending characters within both tokens wont be displayed. For instance, for the tokens foobar and foupar the dierence will only display as up. Select Make default to have the selected options apply to all File Compare frames.

8.2.3

File menu

Use Save to save changes to (both) le(s). Use Export as HTML-File to export the comparison to an HTML-le. Use Close to close the frame.

8.2.4

Edit menu

Contains common functions to alter the le contents and to nd a certain text within the contents. Additionally: Use Take Left Block to take over the complete block below the cursor position from left to right. This may also remove or insert blocks in the right view. Use Take Right Block to take over the complete block below the cursor position from right to left. This may also remove or insert blocks in the left view. c 2012 WANdisco plc, www.wandisco.com 90

Chapter 8. Subwindows Use Customize to customize accelerators (see Section 9.17).

8.2.5

View menu

Use Refresh to refresh the contents of the les from disk. This command is not applicable if both le contents are read-only. Use Left Beside Right to display left and right les side-by-side, which is the default. Use Left Above Right to display the left le above the right le. This can be convenient when having les with long lines. Ignore Whitespace for Line Comparison, refer to Section 9.9. Settings, refer to Section 8.2.2.

8.2.6

Go To menu

Use Previous Dierence to scroll to the previous dierence within the active view, relative to the current cursor location. Use Next Dierence to scroll to the next dierence within the active view, relative to the current cursor location. Use Go to Line to go to the specied Line Number within the active view.

8.2.7

Window menu

Refer to Section 2.5.12 for more details.

8.3

Properties Compare

The Properties Compare window shows the properties of two les or directories, one in the left and one in the right area of the window. A Properties Compare is typically invoked together with a File Compare (see 8.2), e.g. by Query|Show Changes from the Project Window (see 2). The table displays all properties of both les/directories with their Name, State, Old Value and New Value. Old Value corresponds to the value of the rst le/directory and a New Value corresponds to the value of the second le/directory. When the properties compare has been invoked for a versioned le or directory, old refers to the pristine copy of the le/directory and new refers to the working copy le/directory. The State column shows the propertys state, either Modied, Added, Removed or Unchanged. The Name column renders the propertys state by using dierent colors, similar to the File Compare (see 8.2). The lower area of the dialog shows the dierences between Old Value and New Value for the currently selected property, similar to the File Compare (see 8.2). c 2012 WANdisco plc, www.wandisco.com 91

Chapter 8. Subwindows

8.3.1

File menu

Use Close to close the frame.

8.3.2

Edit menu

Use Customize to customize accelerators (see Section 9.17).

8.3.3

Window menu

Refer to Section 2.5.12 for more details.

8.4

Compare Repository Directories

The Compare Repository Directories frame is the result of a Compare Repository Directories command (see 3.9.6) invoked from the Project Window (see 2). It shows the Directories/Files dierences between two repository directories, a From directory and a To directory. For every le, the table shows the corresponding Name. The Name column also shows the state icon of the le (the same for directories). Possible states are: Added, Modied, Modied (properties only), Modied (content and properties), Removed and Unchanged; they are always referring to the modication from From to To directory. The corresponding icons can be found in Table 2.5 and Table 2.6. While the state displayed in the Name is a combination of le content and properties, the Content column refers only to the state of the content. The Properties column refers only to the state of the properties; valid states for properties are Modied and Unchanged. The Relative Directory displays the les path relative to the compare directory.

8.4.1

Compare menu

Use Show Changes to open a File Compare (see 8.2) which shows the dierences for the currently selected le between From and To directory. Use Close to close the frame.

8.4.2

Edit menu

Use File Filter to position the cursor in the le tables lter eld. Use Customize to customize accelerators (see Section 9.17).

8.4.3

View menu

Select Files From Subdirectories to toggle the display of les from subdirectories of the currently selected directory. c 2012 WANdisco plc, www.wandisco.com 92

Chapter 8. Subwindows

8.4.4

Window menu

Refer to Section 2.5.12 for more details.

8.5

Conict Solver

The Conict Solver is a kind of Three-Way-Merge. The content of the current le (which contains the conicts) is displayed in the center text area (merge view). The left and right text areas show the contents of the two les, which have been forked from the common base. The common base itself is not displayed, but regarded by the UI for highlighting changes and conicts. All le contents are directly taken from the les, which SVN produces in case of conicting changes. The Conict Solver is invoked by Tools|Conict Solver from the Project Window (see 2). Note Depending on your Conict Solver settings (see 9.5), performing a conict solver can also invoke an external three-way-merge tool. This section refers only to the built-in Conict Solver of SmartSVN.

The Conict Solver works similar to the File Compare (see 8.2), see also Section 8.2.1 for details.

8.5.1

File menu

Use Save to save changes to the merged le. SmartSVN will detect, whether all conicts have been resolved and in this case also automatically mark the le as resolved (see Section 3.4.14). Use Close to close the frame.

8.5.2

Edit menu

Refer to Section 8.2.

8.5.3

View menu

Use All to display all three le contents side-by-side. Use Left and Merge to display the left view beside the merge view. Use Merge and Right to display the merge view beside the right view. Use Left and Right Above Merge to display the merge view below the left and right view. Use Left Above Right to display the left le above the right le. This can be convenient when having les with long lines. c 2012 WANdisco plc, www.wandisco.com 93

Chapter 8. Subwindows Ignore Whitespace for Line Comparison, refer to Section 8.1.1. Settings, refer to Section 8.2.2. In addition, on the Compare page, Compare with Base can be selected. With this option selected, the content of the center component will not only be compared against the left and the right content, but also against the (invisible) content of the base le: Lines in the left, center and right content which are not equal are also compared to the corresponding lines of the base le and the highlighting depends on the result of this comparison.

8.5.4

Go To menu

In the addition to the Go To found in the File Compare (see 8.2.1), following commands are available: Use Previous Conict to scroll to the previous conicting dierence within the active view, relative to the current cursor location. Use Next Conict to scroll to the next conicting dierence within the active view, relative to the current cursor location.

8.5.5

Window menu

Refer to Section 2.5.12 for more details.

8.6

Revision Compare

The Revision Compare is an optimized multi-le compare. It gives a detailed overview of changes within a set of les. A Revision Compare is for instance invoked by Query|Show Changes from the Log (see 8.7) when having a revision selected. There are various other ways/windows to invoke a Revision Compare in SmartSVN. The core component of the Revision Compare is a read-only File Compare (see 8.2) view; for details regarding the usage, refer to Section 8.2.1. The upper part of the Revision Compare frame consists of a directory tree and a le table, which displays the les being part of the Revision Compare.

8.6.1

File menu

Use Compare to open a File Compare (see 8.2) for the selected le.

8.6.2

Edit menu

Use Customize to customize accelerators (see Section 9.17). Refer to Section 8.2 for details.

c 2012 WANdisco plc, www.wandisco.com

94

Chapter 8. Subwindows

8.6.3

View menu

Select Files From Subdirectories to also display les from subdirectories of the currently selected directory. This works as for the Project Window, see Section 2.4. Use Refresh to refresh the le contents and re-perform the comparison. Ignore Whitespace for Line Comparison, refer to Section 8.1.1. Ignore Case Change for Line Comparison, refer to Section 8.1.1. Settings, refer to Section 8.2.2.

8.6.4

Go To menu

Refer to Section 8.2.1 for details.

8.6.5

Window menu

Refer to Section 2.5.12 for more details.

8.7

Log

The Log window shows the history of a versioned le or directory (entry). A Log is typically invoked by Query|Log from the Project Window (see 2), but there are various other ways/windows to invoke a Log in SmartSVN. The central component of the Log window is the Revisions table, which shows the found revisions with their attributes. You can lter out certain revisions by using Search Author and Commit Message. To the right of the Revisions table, the detailed Revision Info of the currently selected revision is displayed. The lower part of the window shows the Directories/Files view for the selected revision. The displayed structure is restricted to those les and directories, which are children of the log context root; all other les/directories which have been modied within this revision are skipped. The log context root depends on the context from which the log has been invoked. For example, the log context root for logs performed by Query|Log from the Project Window (see 2) is either the corresponding project root directory, or the Externals (see 3.7.7) root directory. The context root can be enlarged to the corresponding Project Root (see 3.8.1) if necessary.

c 2012 WANdisco plc, www.wandisco.com

95

Chapter 8. Subwindows Note For repositories in Subversion 1.6 format, the received log data contains information on whether a changed entry is of le or directory type. Unfortunately this information is not present for older servers, hence SmartSVN tries to detect the entry types itself. The more log information is present, the better are the results of this detection. However, without complete log information SmartSVN may still be wrong. In this case, the entry is assumed to be a le (although it might actually be a directory).

When merged revisions have been requested (see Section 3.9.7), they are added in a tree-like manner to their parent revision which can then be expanded or collapsed. Because merged revisions have no direct link to the logged revisions themselves various commands subsequently listed will not be applicable for these revisions. The context root for merged revisions is the corresponding repository root. Always exactly one of the four views is active which is displayed by its highlighted title. Menu bar actions (as well as toolbar buttons) are always referring to the currently active view.

8.7.1

Log menu

Use Show More to extend the displayed log range. Use Export to File to export the log information to a le. Refer to Section 8.7.7 for details. Use Load Properties to fetch all properties for all displayed revisions from the repository. The Revisions table will be extended by corresponding table columns, one for each property. This command is only available for le Logs. The upper limit of columns to be added can be congured by the system properties (see 13.7). Use Close to close the frame.

8.7.2

Edit menu

Use Stop to cancel the currently running operation. Use Open to open the selected revision/le/directory, for details refer to Section 2.5.2. This command will only be applicable for revisions of le Logs. Use Copy Message to copy the commit message of the selected revision. Use Copy Name to copy the name of the selected le. If multiple les are selected, all names will be copied, each on a new line. Use Copy Path to copy the path of the selected le relative to the log context root. If multiple les are selected, all paths will be copied, each on a new line. Use Customize to customize accelerators (see Section 9.17). c 2012 WANdisco plc, www.wandisco.com 96

Chapter 8. Subwindows

8.7.3

View menu

Select Skip Unchanged Revisions to skip revisions for which the logged entry has not actually been changed, but has only been reported due to a copy operation of one of its parents. E.g. when creating a Tag (see 3.8) of the project root, the log for every entry of that tag will contain this tag-revision. Select Revision Files/Directories to toggle the Directories/Files view in the lower part of the frame. Select Show Only Entries Below Selected Directory to restrict the Directories/Files view to only those directories and les which are actually children of the logged directory.

8.7.4

Modify menu

Use Change Commit Message to change the commit message of the currently selected revision. Enter the new Commit Message and wait until SmartSVN has rebuilt the corresponding Log Cache (see 5.3), if necessary. Use Merge Revision to merge the selected revision/le/directory to your local working copy. If you want to congure advanced options for the merge, use the default Merge command (see 3.6.1). Use Rollback Revision to roll back the selected revision/le/directory locally, i.e. in your local working copy. You may then review the rolled back changes and, if acceptable, commit them (see 3.5). This command will only be applicable for logs which have a link to a local working copy.

8.7.5

Query menu

Use Show Changes to compare the selected revision/le/directory against its preceding revision or to compare two selected revisions/les/directories against each other. Depending on whether two les or directories are compared, either the File Compare (see 8.2) or the Properties Compare (see 8.3) will come up. When invoking Show Changes on a revision, the Revision Compare (see 8.6) will come up. Use Compare with Working Copy to compare the selected revision/le against the les working copy within your project. This command will only be applicable for revisions of le Logs. Use Log to perform another Log for the selected le/directory. This command will not be applicable for revisions as it would result in the same log as already present. Use Revision Graph to create a Revision Graph (see 8.8) for the selected revision/le/directory. Use Annotate to Annotate (see 8.9) the selected revision/le. This command will only be applicable for revisions of le Logs. c 2012 WANdisco plc, www.wandisco.com 97

Chapter 8. Subwindows Use Save As to save the contents of the selected revision/le to a local le, for details refer to (see 4.5). This command will only be applicable for revisions of le Logs.

8.7.6

Window menu

Refer to Section 2.5.12 for more details.

8.7.7

File Export

You can export log data in various formats to a le using Log|Export to File. Select either to export All revisions, independent of the selection or only the Selected revisions. Specify the Output le to which the log information will be written. If Include changed paths is selected, not only the main revision information but also the details on which les/directories have been changed will be exported. Specify the le Format which shall be used for the export. XML will export in raw XML format, as used by svn log --xml. HTML will give a basic HTML output. Plain text will give a simply formatted plain text le. Custom maybe used to export in an arbitrary format, by performing a style sheet transformation on the raw XML data. In this case, enter the path of the stylesheet for XSTL-File.

8.8

Revision Graph

The Revision Graph window shows all entries (les/directories) within all revisions which are related to a specic repository entry (le/directory) at a specic revision. A Revision Graph is typically invoked by Query|Revision Graph from the Project Window (see 2), but there are various other ways/windows to invoke a Revision Graph in SmartSVN. The central component of the Revision Graph window is the Revisions graph, which displays the complete graph for the selected entry. The graph consists of nodes, branches and links. A node represents a specic entry (le/directory) at a specic revision in the repository. Every graph has a unique root node, which is displayed in the upper left corner of the graph. A node which is directly derived from another ancestor node, i.e. which has the same URL, but at a higher revision number, is displayed directly below its ancestor in the same branch. A node, which is derived from another ancestor node by copying, is displayed right below its ancestor in a separate branch. A node shows its revision number, author and date. It can also show inlined tags and branches in the lower part of the nodes area. Tags and branches are copies of the revision graph entry which have happened in a specic revision, hence in general they would be represented by separate nodes on their own. They will be inlined however, if the revision graph entry itself has not been changed in the tag/branch copy revision and no further commits to the copied location have happened. To detect tags and branches, the Tag-Branch-Layout (see 3.8.1) must be congured properly. A branch is a collection of linked nodes (which are directly derived from each other), at the same URL. The head of the branch displays this URL, divided into trunk/tag/branch, c 2012 WANdisco plc, www.wandisco.com 98

Chapter 8. Subwindows path and name of the node. The division of the URL depends on the Tag-Branch-Layout (see 3.8.1) and certain parts (like the name, or the path) may be omitted if they have not changed compared to the ancestor node. You can navigate through the graph either with the mouse or with the keyboard (cursor keys) and select certain nodes by clicking with the mouse or using <Space>-keystroke. The overall layout of the window is similar to the Log (see 8.7) window. The Revision Info component displays detailed information for the currently selected revision. The lower Directories/Files area shows all les/directories for the currently selected revision which are located below the Log Scope (see Section 3.9.8); other entries of the revision are skipped. Always exactly one of the four views is active which is displayed by its highlighted title. Menu bar actions (as well as toolbar buttons) are always referring to the currently active view.

8.8.1

Merge Information

The Revision Graph can display information on which revisions have been merged from other revisions in various ways. Depending on the selected visualization method, it may be necessary to fetch SVNs mergeinfo for every displayed revision from the repository, what may take a while. SmartSVN will cache this mergeinfo for the current graph, so subsequent invocations of mergeinfo-related queries are performed much faster. Merge Arrows Use Query|Show Merge Arrows to display merge arrows pointing from merge source to merge target revisions. In case the merge source is a range of revisions, the corresponding revisions will be surrounded by a bracket. Merge Sources Use Query|Show Merge Sources to display which revisions have been merged into the currently selected target revision(s). In this way every revision is classied into one of the following categories: Merge Target: The revision itself has been selected as target. Merged Now: The revision has been merged directly at and to one of the selected targets. Merged: The revision has been merged into at least one of the selected targets, but not at the targets revision itself. Not Yet Merged: The revision has not yet been merged into any of the selected targets. Not mergable (normal revision): The revision is in the ancestor line of all targets and hence cant be merged. c 2012 WANdisco plc, www.wandisco.com 99

Chapter 8. Subwindows The classication is displayed by color-coding the revisions; the colors can be specied in the Revision Graph settings (see 9.8). Merge Targets Use Query|Show Merge Targets to display to which revisions the currently selected target revision(s) have been merged. In this way every revision is classied into one of the following categories: Merge Source: The revision itself has been selected as source. Merged Now: At least one of the selected sources has been merged directly into this revision. Merged: At least one of the selected sources has been merged into this revision, but not at this revision itself. Not merged (normal revision): None of the selected sources has been merged into this revision. The classication is displayed by color-coding the revisions; the colors can be specied in the Revision Graph settings (see 9.8).

8.8.2

Search

Use Edit|Search to search for certain revisions. Enter the Search For term and select in which parts of the displayed information to Search In. With Branch Name selected, the search will included the assigned branch of the revision; this may either be the containing branch or an assigned tag displayed inlined for the revision. Revision Number, Author and Commit Message will include the corresponding revision properties. The search results will be displayed in the revision table. You may select a certain revision and jump to it in the graph by clicking Select. Alternatively, you may keep the dialog open in foreground and automatically jump to the selected revision by having Directly select revision in graph selected.

8.8.3

Branch Filter

Use View|Branch Filter to lter the display for certain branches. Select Show all branches to reset the lter and show all branches. Select Filter branches matching following regular expression and enter the Regular Expression lter criterion to restrict the display to the corresponding branches. The last entered Regular Expression pattern will be stored in SmartSVNs project settings. Note For details on the supported regular expression constructs refer to http://java.sun.com/j2se/1.5.0/docs/api/java/util/ regex/Pattern.html. In addition to the regular expression syntax you may prex the whole expression by ! to negate the expression, i.e. to hide instead of show the matching branches and vice versa. 100

c 2012 WANdisco plc, www.wandisco.com

Chapter 8. Subwindows The tables in the bottom of the dialog will give a preview of the lter results, denoting the Shown Branches and Hidden Branches. Click OK to apply the branch lter to the graph.

8.8.4

Graph menu

Use Export as Image to export the complete Revisions graph to an image le. Use Close to close the frame.

8.8.5

Edit menu

Search, see Section 8.8.2. Use Customize to customize accelerators (see Section 9.17). Refer to Section 8.7.2 for more details.

8.8.6

View menu

Use Zoom In to increase the zoom level of the graph. Use Zoom Out to decrease the zoom level of the graph. Select Show Dates to toggle the display of the nodes revision date. Select Show Copy Source to toggle the display of the nodes copy source, if present. Select Show Tags to toggle the display of the nodes inlined tags. Select Show Dead Revisions to also display revisions for which the entry has been deleted. If deselected, a simple Died at information will be inserted for the last alive revision. Select Show Dead Tags and Branches to toggle the display of tags and branches which are not present anymore in the repositorys HEAD revision. Select Join Same Locations to display revisions having the same URL in the same branch (column). Having locations joint gives a better impression of which dierent URLs are used and can result in a more compact graph. Depending on the number of branch replacements, it can also make branches lengthy and the graph more complex. Disabling this option gives best results in combination with disabling Show Dead Tags and Branches. Branch Filter, refer to Section 8.8.3. Select Revision Files/Directories to toggle the Directories/Files view in the lower part of the frame. Tip You can also use Ctrl-key in combination with the mouse-wheel to zoom in/out the graph. 101

c 2012 WANdisco plc, www.wandisco.com

Chapter 8. Subwindows

8.8.7

Modify menu

Refer to Section 8.7.4 for details.

8.8.8

Query menu

Show Merge Arrows, see Section 8.8.1. Show Merge Targets, see Section 8.8.1. Show Merge Sources, see Section 8.8.1. Use Clear Merge Information to clear the currently displayed merge information (and the cached revision mergeinfo). Refer to Section 8.7.5 for details.

8.8.9

Window menu

Refer to Section 2.5.12 for more details.

8.9

Annotate

The Annotate window shows the contents of a le with each line prexed by the line number and by information to the last revision at which this line has been introduced or changed. The Annotate window is typically invoked by Query|Annotate from the Project Window (see 2), but there are other ways/windows to invoke an Annotate window in SmartSVN. The Revision selector displays all revisions for which the corresponding le contents are available. These will be all revisions of the le, if for the corresponding Annotate command (see 3.9.9) Track content of all revisions had been selected. Otherwise, only the annotated revision of the le itself will be displayed and the selector wont be applicable. So using this selector you can navigate through all contents of the le. Change Color By to change the line coloring: Choose Revision to have two colors and a threshold revision Newer Or Equal. Lines which have been introduced before this threshold revision will receive the default background color, while lines introduced at or after the threshold revision will receive another background color. Choose Age to change the coloring scheme so that the colors of the lines reect their Age: The youngest and oldest line will be determined, receiving two distinct colors. For all other lines, the color will be linearly interpolated based on their relative age compared to the youngest and oldest line. The interpolation itself can either be based on the Revision number or on the revisions commit Time. Choose Author to have lines of the same author displayed with the same background color and lines of dierent authors displayed with dierent background colors. c 2012 WANdisco plc, www.wandisco.com 102

Chapter 8. Subwindows

8.9.1

Annotate menu

Use Close to close the frame.

8.9.2

Edit menu

Contains common functions to alter the le contents and to nd a certain text within the contents. Use Customize to customize accelerators (see Section 9.17).

8.9.3

View menu

Settings, refer to Section 8.1.1.

8.9.4

Revision menu

Use Show File Changes to invoke a File Compare (see 8.2) between the currently selected Revision and the previous revision. Use Show Revision Changes to invoke a Revision Compare (see 8.6) containing all changed les between the currently selected Revision and the previous revision. Use Go To First Revision to select the rst Revision. Use Go To Last Revision to select the last Revision. Use Go To Next Revision to select the next Revision. Use Go To Previous Revision to select the previous Revision. Use Go To Preceding Revision to select the preceding Revision for the currently selected line to see what the content of the line has been before.

8.9.5

Go To menu

Refer to Section 8.2.6 for details.

8.9.6

Window menu

Refer to Section 2.5.12 for more details.

c 2012 WANdisco plc, www.wandisco.com

103

Chapter 8. Subwindows

8.10

Merge Preview

The Merge Preview is the result of a Merge command (see 3.6.1) invoked from the Project Window (see 2). It shows a Directories/Files structure of which les and directories will be aected by the merge. For every le, the table shows the corresponding Name and its Relative Directory, according to the merge root. State shows the merge state for the le, either Modied, Added, Removed, Unchanged or Skipped For Modied les, both the Content and the Properties can be either Conicting, Modied or Unchanged. Skipped les cant be processed by the merge, e.g. because they have been renamed or moved in the merge source, i.e. the local working copy.

8.10.1

Merge menu

Use Show Changes to show the File Compare (see 8.2) between the current local le and the merge Result for the selected le. This command will only be applicable for Modied and for Conicting les. Use Show 3-Way-Merge Changes to show the Conict Solver (see 8.5) for the selected le, previewing the detailled changes and conicts which can be expected when actually performing the merge. Use Perform Merge to actually perform the merge exactly as it has been previewed here. If you had initially selected a merge revision range containing HEAD, these ranges will have been adjusted. This prevents the nal merge from including any new revisions which had been committed after previewing the merge. Use Close to close the frame.

8.10.2

Edit menu

Use Customize to customize accelerators (see Section 9.17).

8.10.3

View menu

Select Files From Subdirectories to toggle the display of les from subdirectories of the currently selected directory.

8.10.4

Window menu

Refer to Section 2.5.12 for more details.

c 2012 WANdisco plc, www.wandisco.com

104

Chapter 9 Preferences
The application preferences dene the global behaviour of SmartSVN, regarding UI, SVN commands, etc. Contrary to the project settings (see Section 7.3), these preferences apply to all projects. Tip Most preferences are stored in the settings.xml le in SmartSVNs settings directory. Refer to Section 12 for details.

9.1

On Start-Up

These settings congure the startup behaviour of SmartSVN. You can either choose to Open last project, Show Welcome Dialog or Do Nothing, i.e. start with an empty main frame. Select Remove obsolete projects to check for every project on start-up whether the corresponding root directory still exists. In case that the root paths of certain projects is not valid anymore, you will be asked whether to remove these projects from the project tree (see Section 7.2).

9.2

Project

For Open Project you can specify the behavior when opening a project. Projects can be opened In current window (unless there are SVN operations active for the currently opened project) or In new window. By default, Ask is selected to let you choose individually. With Conrm closing selected, you will always be asked before a project is closed.

9.3

User Interface

These settings aect certain aspects of the user interface of SmartSVN. Select whether to use Basic or Advanced recursion options, for details refer to Section 3.14.1.

105

Chapter 9. Preferences Select Use View-menu le lters also for directories to have the lters from the View-menu within the Project Window (see 2) not only applied to les but also to directories. For details on refer to Section 2.5.3. Select Show le and directory tooltips to toggle the display of tooltips for the Directories tree and the Files table within the Project Window (see 2). For File Name Matches you can choose how le name search/lter functions in SmartSVN will work: Exact Case: Requires the search pattern and le name to match in case. Ignore Case: Ignores the case for matching search pattern and le name. Smart upper case: Lower case characters in the search pattern can match upperand lower-case characters in the le name. But upper-case characters in the search pattern match only upper-case characters in the le name. Examples: SMF will match SuMainFrame, but not SuMainContentFrame. fileS will match FileSignature, but not Files. Select Nest in System Tray to have SmartSVN show a System Tray icon. This option is not available for all operating systems. For details refer to Section 10.8. Congure the Date Format and Time Format to be used by SmartSVN when displaying dates and times, respectively, and combinations of both. These formats have no eect on SVN operations. Its recommended to restart the application after having changed these formats.

9.4

Commit

Here you can congure global commit (see 3.5) options. Select Skip Change Set entries to ignore found changed les or directories which have already been assigned to a Change Set (see 3.12). Select Detect moved and renamed les if you want SmartSVN to detect les which are most likely renamed or moved. These les will not simply be added and removed, but marked as copied. For details, refer to Section 3.4.8. Except from those les which have been selected and which are in a committable SVN state, SmartSVN can Suggest To commit further les: Select Add unversioned les and directories to also report unversioned (most likely new) les and directories. Select Remove missing les and directories to also report missing (most likely obsolete) les and directories. Select Remove removed parent directories to make SmartSVN also scan parent directories of the les/directory which have been selected for the commit. If such a parent directory is scheduled for removal, it will also be suggested for the commit. With Also remove empty parent directories, all resulting emtpy parent directories will also be suggested for the commit. Tip To clean up all empty directories within your project, you can use Tools|Remove Empty Directories, see Section 11.3. 106

c 2012 WANdisco plc, www.wandisco.com

Chapter 9. Preferences Select Remind me to enter a commit message to make SmartSVN warn you when trying to commit without a message. Select Trim whitespaces from commit message to trim leading and trailing whitespaces from the commit message directly before committing. Select Warn for case-changed les to make SmartSVN warn you before trying to commit case-changed les; even when warned, you will still be able to continue with the commit. Specify to Remember up to a specic amount of entered commit messages for each project. Choose for For File Commits if you want to be warned for potentially missed les when performing a commit: Select Do not warn for potentially missed les or directories to switch all warnings o. Select Warn for potentially missed directories, just up the root to receive a warning if you have selected all visible committable les and any of their parent directories is modied (containing properties changes). Select Warn for any potentially missed directories to receive a warning if you have selected all visible committable les and there are any more modied directories in the project. Select Warn for any potentially missed directories and les to receive a warning if you have selected all visible committable les and there are any more modied directories or committable les.

9.5

Conict Solver

Here you can congure external tools which should be used instead of the built-in Conict Solver (see 8.5). You can either choose to use the Built-in Conict Solver or an External Conict Solver. An external conict solver is dened by the operating system Command to be executed, and its Arguments. Arguments are passed to the Command as it would occur from the OS command line. The place holder ${leftFile}, ${rightFile}, ${mergedFile} and ${baseFile} can be used, which will be substituted by the absolute le path of the left, right and merged (resulting) le, respectively. Furthermore, the place holder ${encoding} can be used which will be substituted by the les used encoding. Refer to Section 7.3.1 for details.

9.6

Open

With Dont open or compare more than X les at once, you can specify an upper limit beyond which you will be asked before the set of les is opened at once. It is recommended to set this value not too high, because accidentally opening a large amount of les can overextend the system. c 2012 WANdisco plc, www.wandisco.com 107

Chapter 9. Preferences

9.7

Refresh

These settings congure the behaviour of refreshing the le system. Choose Recursively scan unversioned directories to make SmartSVN descend into unversioned directories and display the complete unversioned sub-tree. Otherwise, only the unversioned root directory itself will be scanned and displayed. Choose Perform cleanup if necessary to automatically cleanup after a manual Refresh. See Section 3.4.16 for details. By Manual Refresh you can congure how the manual Refresh by View|Refresh (see Section 2.4) behaves. All options take into account the scanned/unscanned state of the working copy, see Section 7.3.2. You have the option to refresh Always root directory. In this case the directory selection in the tree does not matter, but always the whole project is refreshed. This option requires the most eort, but will guarantee that after changing the selection in the tree, displayed data is still up to date (relative to the last refresh time). You can also choose to refresh only the Selected directory recursively. This option can be useful, if you know, that you are only working a specic part of your whole SVN project. The option Selected directory (recursively if set for view) also refreshes only the selected directory. Whether this refresh is recursive or not, depends on View|Files From Subdirectories. This option is the fastest way of refreshing as it is most selective, but it requires you to be always aware of which directories you have refreshed and hence which information displayed in directory tree and le table are actually up to date. SmartSVN can also automatically perform a refresh of the project after it gets the focus back, if congured by Refresh on frame activation. In general, the automatic refresh behaves the same way as congured for the Manual Refresh option. Furthermore, you have either the option to disable automatic refresh by Never, have an immediate refresh by Immediately or have only a refresh, if SmartSVN has been inactive for at least 5 seconds by After more than 5 seconds of deactivation. This option is useful, if you typically switch to other applications for a short period of time and do not want to trigger automatic refresh. On Windows, the native File Monitor provides a more ecient way to nd out necessary directories to refresh. Hence, After more than 5 seconds of deactivation is not available here and regardless of the selected Manual Refresh option, every directory below your project root will be refreshed, if necessary. Note Using Refresh on frame activation is for instance convenient if you are working some time on your project (e.g. in an IDE), then decide to check and commit your changes and hence get back to SmartSVN. 108

c 2012 WANdisco plc, www.wandisco.com

Chapter 9. Preferences To automatically perform a Remote State Refresh with every local Refresh, you can select Refresh Remote State with local Refresh. You may choose to Include externals and you may choose to Scan locks for a remote state refresh. For details regarding the Remote State, refer to Section 3.11. Note Due to optimized Refresh behavior on Windows, only a subset of your project directories might be refreshed when switching back from another application and Refresh on frame activation has been enabled. Hence, also the Remote State for only this subset of directories will be refreshed.

9.8

Revision Graph

Here you can congure global Revision Graph (see 8.8) options. The Colors are used to colorize the Branches and Revisions of a Revision Graph. You can specify colors for both Normal (unselected) and Selected mode. Use Reset to Defaults to reset the colors to SmartSVNs default values.

9.9

Built-in Text Editors

These settings are used as a default for all text-displaying and editing views of SmartSVN, like the Text Editor (see 8.1), the File Compare (see 8.2), the Conict Solver (see 8.5), the Annotate (see 8.9) and the Changes view (see 2.6). For the Font page, choose the Font Family and the Font Size to be used by SmartSVNs text components. Optionally you may choose to have a Smooth text display, also known as antialiasing. For the Colors page choose the various colors, used by SmartSVNs text components. You can use Reset to Defaults to restore the factory defaults for this page. For the Behavior page you can congure various aspects of the text editing functions.

9.10

File Comparators

Here you can congure external le compare tools which can be used instead of the built-in File Compare (see 8.2). You can link a specic File Pattern to a le comparator. You can either choose to use the Built-in text le comparator, an External comparator or an External viewer.

9.10.1

External Comparators

An external comparator is dened by the operating system Command to be executed, and its Arguments. Arguments are passed to the Command as it would occur from the OS command line. The optional place holders ${leftFile} and ${rightFile} will be substituted by the absolute le path of the left and right le to compare, respectively. In cases, where SVN-internal les like the pristine copy is used for comparison, the content of c 2012 WANdisco plc, www.wandisco.com 109

Chapter 9. Preferences this le is copied to a temporary location and this temporary le is passed as parameter. The optional place holders ${leftTitle} and ${rightTitle} will be substituted by the left and right le title, respectively, which SmartSVN would use when displaying its internal le comparator. Furthermore, the place holders ${leftEncoding} and ${rightEncoding} will, if used, be substitued by the encoding of the left and right le, respectively. Refer to Section 7.3.1 for details. With In case of svn:mime-type is binary, try to detect whether actually text type you can override binary svn:mime-types. In this case, SmartSVN will detect the content type text/binary itself by inspecting the le. This is the same as if svn:mime-type has not been set at all.

9.10.2

External Viewers

An external viewer is dened by the operating system Command to be executed, and its Arguments. Its executed two times, once for the left and once for the right le to compare. Arguments are passed to the Command as it would occur from the OS command line. The optional place holders ${file} will be substituted by the absolute le path of the left and right le to view, respectively.

9.11

External Tools

These settings congure external tools, which can be invoked by Edit|Open. You can link a specic File Pattern to an external tool. A tool is dened by the operating system Command to be executed, its Arguments and Run In. Arguments are passed to the Command as it would occur from the OS command line. Additionally the place holder ${filePath} can be used, which is substituted by the absolute le path of the le (from the le table), on which the command is invoked. Run In species to run the command either in SmartSVNs working directory or in the Files directory. The File Pattern typically contains wild-card symbols (? and *) and may also consist of multiple patterns, separated by comma. When running SmartSVN with Java 6 (or above), you can also choose to invoke the System Edit Command or System Open Command instead of the self-dened command specied by Following Application. Example To congure Acrobat Reader (TM) as the default editor (viewer) for PDF-les, enter *.pdf for File Pattern, the path of Acrobat Reader Executable (e.g. on Microsoft Windows acrord32.exe) for Command and keep ${filePath} for Arguments.

9.11.1

Directory Command

The Edit|Open command can also be performed on directories. For this case a Directory Command can be congured.

c 2012 WANdisco plc, www.wandisco.com

110

Chapter 9. Preferences To be able to use Edit|Open on a directory, you have to select Use following command to open a directory. As for les you can congure the Command which shall be executed and the Arguments to be passed. The directory command will always be executed in the selected directory. Example On Microsoft Windows, to open the command shell for a selected directory, enter cmd.exe for Command and /c start cmd.exe for Arguments.

9.12

Transactions

These settings congure global Transactions (see 5) settings. For Refresh every select the interval in minutes for which all active Transactions views shall be refreshed. To distinguish transactions of a project from those of additional URLs which are watched, project transactions will be labeled by a Project Identier. Refer to the system properties (see 13.4) for further conguration options which are seldom used.

9.13

Spell Checker

These settings congure the spell check support which is used primarily for the Commit command (see 3.5). You can dene multiple Dictionaries. Every dictionary has a Name which is used in the spell checker popup menu and a Dictionary File. In addition, there is also one optional File for My Own Words which can be extended by SmartSVN. Note The Dictionary File has to be in MySpell format, however Hunspell les are in general working well too. The File for My Own Words is a simple list of words.

Warning! Depending on the number and size of the dictionary les, the memory consumption of SmartSVN can increase signicantly. If you have congured multiple dictionaries, text elds for which spell-checking is supported oer in their popup menu a Language-menu from which you can select the intended dictionary by its Name. Alternatively, you can choose whether to Use Best Matching or Use All dictionaries. Use All is useful to combine multiple dictionaries of the same language, e.g. one le with general expressions and one with domain-specic expressions. Use Best Matching is useful to build a super-dictionary containing multiple languages and have SmartSVN detect which dictionary ts better for a given text to check.

c 2012 WANdisco plc, www.wandisco.com

111

Chapter 9. Preferences Example When you are frequently writing English as well as German commit messages, you can specify one English and one German dictionary and select Use Best Matching. Now, when writing an English commit message, SmartSVN will detect after a few words that the English dictionary ts better and hence will check the complete commit message only with the English dictionary (as if you had manually selected the English dictionary). On the other hand, when writing a German commit message, SmartSVN will detect to use the German dictionary and only check for German spelling correctness.

9.14

Shell Integration (Windows)

These settings congure the Shell Integration (see 10.6) of SmartSVN. Select for which drive types and in which range of functions the shell integration shall be applicable. For every drive type you can choose whether to show Icon Overlays (and the context menu) or only the Context Menu or have the shell integration be completely Disabled. If necessary, specify further Paths for which the shell integration will only be applicable with a limited range of functions, either only the Context Menu or completely Disabled. Use only plain paths, like c:\temp or n:, but no patterns here. Note In general its recommended to have Icon Overlays only enabled for Fixed Drives, because the display of the overlays may slow down your machine due to access to the working copy metadata (.svn directory). When having working copies located on fast network shares, Icon Overlays should work here well, too. In case you have a mixture of fast network shares and e.g. slow VPN-tunneled shares, you may exclude the latter ones by the Paths input eld.

9.14.1

Status Cache

Use Congure Status Cache to congure the Status Cache (see 10.9). This requires the Status Cache service running. In the dialog you can congure the Cache Roots which will be served by the Status Cache. Enter every root directory on a new line, wildcards are not allowed here. Optionally you can reset the Status Cache by Clear all cached status information. Selecting this option is only recommended if you denitely want to get rid of cached status information for a certain root directory as cached information is not discarded by simply removing this root directory from the Cache Roots list.

9.15

Shell Integration (Mac OS)

These settings congure the Shell Integration (see 10.7) integration of SmartSVN.

c 2012 WANdisco plc, www.wandisco.com

112

Chapter 9. Preferences Select whether to enabled the shell integration by Integrate in Finder or not. If necessary, specify further Paths for which the shell integration shall be completely disabled. Use only plain paths, like /Volumes, but no patterns here.

9.16

Check for Update

These settings congure the New Version Check mechanism of SmartSVN (Section 2.5.13). Select Automatically check for new program version to make SmartSVN check for program updates after it has been started. Choose either Daily, Weekly or Monthly; the recommended option is Weekly. Note For beta versions the interval is xed to Daily.

The version check reads a small le from http://www.wandisco.com. If necessary, you can specify to use a proxy server by Use a proxy server to connect to the internet. In this case specify Host and Port for the proxy server and optionally Username and Password to access the proxy server.

9.17

Customize

For every frame in SmartSVN you can congure accelerators, sometimes also context menus and the tool bar (if present). Use Edit|Customize to open the conguration dialog.

9.17.1

Accelerators

Use this page to customize the accelerators (shortcuts). To set or change an accelerator, select the corresponding menu item, go to the Accelerator eld, press the key combination and click Assign. To remove existing accelerators, select the corresponding menu items and click Clear. To reset accelerators to their default, select the corresponding menu items and click Reset. Tip You can double click a menu item to directly jump to the Accelerator eld. You can assign/change multiple accelerators at the same time, if they each belong to a dierent Window.

9.17.2

Context Menus (not always available)

Use this page to customize the context menus. First select the Context Menu to change. Then you will nd all available menu items on the left and the current context menu structure on the right. You can either use Drag-and-Drop to arrange the context menu or use the corresponding buttons: Use the Add button to add a selected menu item from the left side before the selected item on the right side. You also can use Add Separator or Add Menu to add the corresponding item c 2012 WANdisco plc, www.wandisco.com 113

Chapter 9. Preferences before the selected item on the right side. Each (sub)menu contains a gray placeholder at the end to allow adding items to the end of that (sub)menu. Use the Remove button to remove a selected menu item, a separator or a submenu on the right side. Use Reset to Defaults to restore the default context menu layout for the selected Context Menu. Tip If you havent changed the context menus (signicantly) its recommended to use Reset to Defaults after having upgraded SmartSVN to a new major version as new menu entries might have been added.

9.17.3

Toolbar (not always available)

Use this page to customize the toolbar. Use Add to add one or more Available buttons to the toolbar, and Remove to remove one or more Selected buttons from the toolbar. From the Add drop down, use Fixed Separator to add a separator before the currenly selected button. Use Stretching Separator to add a strechting space before the currently selected button. The remaining horizontal space is subdivided and assigned to the stretching separators. Use Move Up and Move Down to re-arrange the order of the buttons. Note All operations can be performed by Drag-and-Drop, too.

c 2012 WANdisco plc, www.wandisco.com

114

Chapter 10 Shell Integration


SmartSVN oers a shell integration to have the SVN functionality of SmartSVN also present in certain parts of GUI shells, like in le dialogs. The shell integration is currently present on Microsoft Windows and Apple Mac OS X. It is only available when SmartSVN is running (except the one on Mac OS X 10.6).

10.1

Commands (Windows and OS X 10.5)

From the shells context menu, there are the most important SVN commands available for locally versioned les and directories. Performing commands from the shells context menu results in the same dialogs and windows as if performing the commands from the Project Window (see 2). For details regarding the commands refer to Section 3. For commands performed from the shell, the same environmental settings are used as when performing them from the Project Window. This especially implies the Project Settings (see 7.3), if for the current working copy directory a corresponding project exists. If no matching Project (see 7) can be found, SmartSVN will use the Default Settings (see 7.3.4). From the context menu, use Open Project (or Open SmartSVN if no le/directory is selected) to launch the Project Window (see 2) and open the corresponding project. Tip For the command icons, the icon les within lib/icons in the installation directory of SmartSVN are used. The names are corresponding to the command names. For every command, there is a default icon and a grayed version, which has an additional -g in its name. If you prefer, you can replace these icons.

10.2

Commands (OS X 10.6)

Unfortunately, Apple has dropped the Finder integration API with OS X 10.6. Hence, SmartSVN only can provide a very simple alternative using socalled services. From the Finders context menu three commands are available if les or directories are selected: Update from SVN, Commit to SVN and Open in SmartSVN. Note, that because of 115

Chapter 10. Shell Integration the limited services API these commands are available independent of the SVN state of these les or directories. They are even available for items which are not SVN-controlled. In contrast with the shell integration on Windows and OS X 10.5, SmartSVN does not need to be running to be able to invoke the commands. If necessary, SmartSVN will start automatically.

10.3

Output Window

All commands invoked from the shell integration will be executed in a special output window. You may select Close automatically on success to have the window closed automatically after all currently running operations have been completed successfully.

10.3.1

File menu

Use Show Changes on a selected le/directory to see what has been changed locally by executing the command. Use Log on a selected le/directory to see the corresponding Log (see 8.7). Use Close to close the frame.

10.3.2

Edit menu

Use Stop on one or more selected commands to cancel them. If no command has been selected, you will be asked whether to cancel all currently running commands. Use Customize to customize accelerators (see Section 9.17).

10.3.3

Window menu

Refer to Section 2.5.12 for more details.

10.4

Overlay Icons

The overlay icons show the SVN states for the corresponding les and directories. Currently, overlay icons are only present on Windows. Because the number of possible overlay icons is limited by the operating system, only the most important SVN states have a special overlay icon, see Table 10.1 for details. Versioned, but unchanged les and directories do not have a special overlay icon. For all other SVN states, the modied icon is used. Tip For the overlay icons, the icon les within lib/icons in the installation directory of SmartSVN are used. The names are corresponding to the States used in Table 10.1. If you prefer, you can replace these icons.

c 2012 WANdisco plc, www.wandisco.com

116

Chapter 10. Shell Integration Icon State Modied Modied recursively Added Removed Ignored Conicted Unversioned Root Details File/directory is modied in contents/properties. Directory itself of some le/subdirectory is modied (requires the Status Cache service (see 10.9) running. File/directory is scheduled for addition. File/directory is scheduled for removal. File/directory is not under version control (exists only locally) and is marked to be ignored. An updating command lead to conicting changes either in content or properties. File/directory is not under version control, but only exists locally. Directory is a working root and is not modied. Figure 10.1: Overlay Icons

The availability of overlay icons as well as commands can be congured in the Preferences (see 9.14). Note On Windows, for technical reasons no icon overlays for les within your prole directory %USERPROFILE% are shown (except of subdirectory My Documents).

10.5

Server Mode

To provide the shell integration without requiring SmartSVN actually being open, SmartSVN can be started with the --server-mode argument, for details refer to Section 12.4.

10.6

Windows Shell Integration

The shell integration adds overlay icons to directory and le views of Windows and SVN commands to the context menu for directories and les. You will especially see them for the Windows Explorer, but also for other software which e.g. uses the native le dialogs of Windows.

Installation
You can choose to enable the shell integration for the installation of SmartSVN, when using the MSI installers. Its also recommended to have SmartSVN automatically be started with the system startup, so the shell integration is available immediately. The installers oer a corresponding option which will add SmartSVN to the Autostart section, starting SmartSVN in server mode (see 10.5). c 2012 WANdisco plc, www.wandisco.com 117

Chapter 10. Shell Integration

Uninstallation
The shell integration will be uninstalled together with SmartSVN. You can also uninstall the shell integration independently from the Control Panel, Software, using Repair there.

10.7

Mac OS X Finder integration

The Finder integration lets you perform SVN commands in the Finder using the context menu.

Installation
On the rst start, SmartSVN asks whether to install the Finder integration. If you choose to install it, SmartSVN will create a symbolic link ~/Library/Contextual Menu Items/SmartSVN CM.plugin. If you choose not to install, you can install it later by selecting the option Integrate in Finder on the Shell Integration page of the Preferences (see 9.15). If the installation by SmartSVN itself fails for some reason, you can install the Finder integration yourself. If the folder ~/Library/Contextual Menu Items does not exist yet, create it. Right click the SmartSVN application in the Finder and select Show Package Contents. Copy the SmartSVN CM.plugin from within the SmartSVN application to the folder ~/Library/Contextual Menu Items. Log out and relogin again.

Uninstallation
Unselect the option Integrate in Finder on the Finder Integration page of the Preferences. To manually uninstall the Finder integration, just delete ~/Library/Contextual Menu Items/SmartSVN CM.plugin and log out and relogin again.

Automatic start at login


The Finder integration will only work when SmartSVN is running. The easiest way to do that automatically, is to let SmartSVN be launched at login. Just right click the SmartSVN dock icon and select Open at Login. Alternatively, you can use the Accounts panel in the System Preferences to dene SmartSVN as Login Item. Note, that the Hide option has no eect. If SmartSVN is dened as Login Item, it will be started in server mode (see 10.5).

10.8

Tray Icon

By default, SmartSVN keeps running even when all frames have been closed. To have SmartSVN still accessible, a tray icon is used. Its available for Microsoft Windows, most Linux desktop managers and other operating systems for which tray icons are supported.

c 2012 WANdisco plc, www.wandisco.com

118

Chapter 10. Shell Integration From the context menu of the tray icon, use New Project Window to open a new Project Window (see 2), New Repository Browser to open a new Repository Browser (see 4) or Show Transactions to open the Transactions frame (see 5.1). Open the Preferences or information About SmartSVN. To exit SmartSVN, use Exit SmartSVN. Note On Mac OS SmartSVN is permanently available when SmartSVN is running, even when all frames are closed. In this case it has a reduced menu bar, including the Window menu.

The tray icon shows the progress of currently processing SVN operations which have been invoked from the shell extensions. It also shows the presence of new revisions for the Transactions (see 5.1) frame; the tooltip gives more information on which repositories have new transactions. You can disable the tray icon in the Preferences (see 9.3) by deselecting Nest in System Tray. In this case, SmartSVN will exit once the last frame has been closed. Note The Nest in System Tray option is not regarded when starting SmartSVN in server mode (see 10.5).

10.9

Status Cache

The Status Cache is an optional Windows service which manages SVN status information for your working copies. Its primarily used to displayed the recursively modied state for directories, which is denoting that some les/subdirectories are modied. Also, the initial scanning/refresh (see 2.4.5) accesses Status Cache information to quickly give a preview of the working copy. To avoid unnecessary system load, the root directories which will be served by the Status Cache have to be explicitly congured. SmartSVN will ask you to do so for the rst command which you perform through the Shell Integration. The Status Cache can be recongured any time in the Preferences (see 9.14.1).

Performance considerations
You should carefully determine which root directories should be be served by the Status Cache, as the Status Cache will introduce a certain overhead to your systems load. This overhead comes more apparent the slower the le system to cache is. In general you should: Only congure to cache local harddisks Avoid caching of possible temporary directories which might receive temporary working copies Dont create a too detailled list of individual directories to cache So for instance, if all of your working copies are located at a separate drive D:, it will be perfect to have the Status Cache congured for this single root directory D: and nothing else. c 2012 WANdisco plc, www.wandisco.com 119

Chapter 10. Shell Integration

Uninstallation
If you are only rarely working with the Shell Integration and additional recursively modied state is not important to you, you may completely uninstall the service. This can be done via the Control Panel/Add or Remove Programs, selecting the SmartSVN installer, Change and within the installer using Change again.

c 2012 WANdisco plc, www.wandisco.com

120

Chapter 11 Plugins
SmartSVN comes with a couple of pre-installed plugins, based on SmartSVNs PluginAPI. The functionality contributed by plugins may be benecial to certain users, but is usually either not required for normal usage, or not primarily concerned with SVN. Plugins are deployed as separate JAR les which are located in the plugins subdirectory in SmartSVNs installation directory. A plugin can be disabled simply by removing the corresponding JAR le from this directory.

11.1

JIRA Plugin

The JIRA Plugin provides a basic issue tracker integration for the JIRA issue tracker from Atlassian, see http://www.atlassian.com/software/jira. The plugin adds a Get from JIRA entry to the drop-down menu of commit message text elds (see Section 3.5). For the Commit wizard itself, it will also parse the commit message for potential JIRA issue IDs and ask whether to resolve these issues on successful commit.

11.1.1

Workow

Before connecting to JIRA, SmartSVN will ask you for your Username and Password which may be optionally stored by Store password. If you are connecting to an SSLsecured JIRA server, you will have to conrm the validity of SSL-certicate ngerprints. In case SSL client authentication is required, enter the path to the Certicate le and its Passphrase which may optionally be stored by Store passphrase. On the Files page of the Commit wizard, use Get from JIRA to display a list of JIRA issues, including their Key, Summary and Status. For reasons of clarity, the list will only contain issues which are assigned to your username and which are either in in-progress state or are

contained in the next three unreleased versions (the number of unreleased versions can be changed by the system property smartsvn.plugin.jira.unreleased-versions-to-displ for details refer to Section 13). If there are no unreleased versions, assigned issues for all versions will be loaded. 121

Chapter 11. Plugins You can select one or more issues here which will then be set for the Commit Message. Using Refresh can be useful to reload issues from JIRA. When proceeding the Files page with Next, the plugin will check the Commit Message for JIRA issue IDs. For every issue found, you will be prompted with a Resolve JIRA Issue dialog for which you can either select to Mark as resolved in revision and select the resolution revision. This will contact JIRA and resolve the issue correspondingly. Dont mark as resolved will leave the issue as it is.

11.1.2

Requirements

The availability of the plugin functionality for a certain working copy depends on whether bugtraq-properties (see 3.7.9) for the working copy root directory have been congured and whether the bugtraq:url is pointing to a JIRA Issues page. Following types of URLs are recognized: http(s)://host:port/prex/browse/ProjectKey-IssueID http(s)://host:port/prex/ViewIssue.jspa?key=ProjectKey-IssueID The plugin only works for recent JIRA versions which provide a SOAP interface. The SOAP interface has to be enabled for your JIRA server (what can typically only be done by the administrator). For details on how to enable the interface, refer to http: //confluence.atlassian.com/display/JIRA/Creating+a+SOAP+Client. Note Certain aspects of the plug-in can be customized by system properties (see 13.5).

11.2

Trac Plugin

The Trac Plugin provides a basic issue tracker integration for the Trac issue tracker from Edgewall Software, see http://trac.edgewall.org. The plugin adds a Get from Trac entry to the drop-down menu of commit message text elds (see Section 3.5). For the Commit wizard itself, it will also parse the commit message for potential Trac ticket IDs and ask whether to resolve these tickets on successful commit.

11.2.1

Workow

Before connecting to Trac, SmartSVN will ask you for your Username and Password which may be optionally stored by Store password. If you are connecting to an SSLsecured Trac server, you will have to conrm the validity of SSL-certicate ngerprints. In case SSL client authentication is required, enter the path to the Certicate le and its Passphrase which may optionally be stored by Store passphrase. Warning! Passwords and passphrases will be stored in plain-text in the settings.xml le (see Section 12). c 2012 WANdisco plc, www.wandisco.com 122

Chapter 11. Plugins On the Files page of the Commit wizard, use Get from Trac to display a list of Trac tickets, including their Id, Summary, Status, Milestone and Version. For reasons of clarity, the list will only contain tickets which are assigned to your username and which are either in accepted state or are

contained in the next three unreleased versions respectively in the three incomplete milestones (the number of unreleased versions can be changed by the system property smartsvn.plugin.trac.unreleased-versions-to-display, the number of incomplete milestones by the system property smartsvn.plugin.trac.incomplete-milestonesfor details refer to Section 13). If there are no unreleased versions, assigned tickets for all versions will be loaded. If there are no incomplete milestones, assigned tickets for all milestones will be loaded. You can select one or more tickets here which will then be set for the Commit Message. The commit message pattern depends on the property bugtraq:message. If this property is not set, the pattern can be congured individually over Congure in the ticket list dialog. Using Refresh can be useful to reload tickets from Trac. When proceeding the Files page with Next, the plugin will check the Commit Message for Trac ticket IDs. For every ticket found, you will be prompted with a Resolve Trac Issue dialog for which you can either select to Mark as resolved in revision and select the resolution revision and milestone. This will contact Trac and resolve the ticket correspondingly. Dont mark as resolved will leave the ticket as it is.

11.2.2

Requirements

The availability of the plugin functionality for a certain working copy depends on whether bugtraq-properties (see 3.7.9) for the working copy root directory have been congured and whether the bugtraq:url is pointing to a Trac ticket page. Following type of URL is recognized: http(s)://host:port/prex/ticket/TicketID The plugin only works for recent Trac versions which provide a Trac XML-RPC Plugin. The Trac XML-RPC Plugin has to be installed and nally to be enabled for your Trac server (what can typically only be done by the administrator). For details on how to install and enable the Trac XML-RPC Plugin, refer to http://trac-hacks.org/wiki/ XmlRpcPlugin. Note Certain aspects of the plug-in can be customized by system properties (see 13.6).

11.3

Remove Empty Directories

This plugin adds the Remove Empty Directories menu item to the Tools menu. It schedules all empty, versioned directories below the currently selected directory for removal. Thereafter you can commit the selected directory to actually remove the directories from the repository. c 2012 WANdisco plc, www.wandisco.com 123

Chapter 11. Plugins

11.4

Quick Update

This plugin adds an Update category to the Preferences (see 9). Here you can congure whether to Show Update conguration dialog or not. In case of no conguration dialog, Update (see 3.3.1) will start immediately on invocation and update the selected directory (or le) recursively to HEAD. If you need to update to another revision, you may either enable the conguration dialog again or use the Switch (see 3.3.4) command.

11.5

Plugin-API

SmartSVNs Plugin-API can be used to customize various aspects of SmartSVN by creating corresponding plugins. The Plugin-API currently covers following functionality: Modify the menu structure of the Project Window (see 2.5). Add custom SVN operations to arbitrary menus. Add custom le table columns (see 2.4), e.g. to show custom SVN properties. Customize various aspects of the Commit workow (see 3.5). Customize various aspects of the Update workow (see 3.3.1). Store custom Preferences (see 9) or project settings (see 7.3). For more details refer to http://smartsvn.wandisco.com/techarticles/pluginapi.

11.6

Send Support Email

This plugin adds a Contact Support menu item to the Help menu to open your email client to send a message to [email protected].

11.7

Hide Menu Items

You can use this plugin to remove menu items from the main menu bar of the project window (see 2). The conguration of the plugin is performed by the menuItemsToHide.config in SmartSVNs settings directory (see 12.1). If this le does not exist, the plugin will create it and pre-ll with all available menu items IDs, by default commented out. By un-commenting a line, the corresponding menu item will not be present anymore for the next start of SmartSVN.

11.8

Merge Info Column

This plugin adds the Merge Info column to the File Table (see 2.4).

c 2012 WANdisco plc, www.wandisco.com

124

Chapter 11. Plugins

11.9

Tag Multiple

This plugin adds the Tag Multiple Project Roots (see 3.8.3) functionality to the Project window (see 2).

11.10

Commit Message Templates

This plugin adds support for the tsvn:logtemplate property which can be used to dene a default commit message which will be displayed in the Commit wizard (see 3.5). For details refer to http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/ ch05s15.html.

c 2012 WANdisco plc, www.wandisco.com

125

Chapter 12 Installation and Files


SmartSVN stores its conguration les per-user. The root directory of SmartSVNs conguration area contains subdirectories for every major SmartSVN version, so you can use multiple versions concurrently. The location of the conguration root directory depends on the operating system.

12.1

Location of SmartSVNs settings directory

Windows:: The conguration les are located below %APPDATA%\syntevo\SmartSVN. Note: Before version 5, congurations les have been stored below %USERPROFILE%\.smartsvn. Mac OS:: The conguration les are located below ~/Library/Preferences/SmartSVN. Unix/Other:: The conguration les are located below ~/.smartsvn. Tip You can change the directory where the conguration les are stored by the system property smartsvn.home (see 13.1).

12.2

Notable conguration les

accelerators.xml stores the accelerators (see 9.17.1) conguration. license stores your SmartSVNs license key. log.txt contains debug log information. Its congured via log4j.xml. passwords is an encrypted le and stores the passwords (see 6.4) used throughout SmartSVN. project-defaults.xml stores the default project settings (see 7.3.4). projects.xml stores all congured projects (see 7), including their settings. repositories.xml stores the Repository Proles (see 6), except the corresponding passwords. 126

Chapter 12. Installation and Files settings.xml stores the application-wide Preferences (see 9) of SmartSVN. tag-branch-layouts.xml stores the congured Tag-Branch-Layouts (see 3.8.1). transactionsFrame.xml stores the conguration of the Transactions frame (see 5.1). uiSettings.xml stores the context menu (see 9.17.2) conguration.

12.3

Company-wide installation

For company-wide installations, the administrator can install SmartSVN on a network share. To make deployment and initial conguration for the users easier, certain conguration les can be prepared and put into the subdirectory default (within SmartSVNs installation directory). When a user starts SmartSVN for the rst time, following les will be copied from the default directory to his private conguration area: accelerators.xml project-defaults.xml repositories.xml settings.xml tag-branch-layouts.xml transactionsFrame.xml uiSettings.xml The license le (only for Enterprise licenses and 10+ users Professional licenses) can also be placed into the default directory. In this case, SmartSVN will prell the License eld in the Set Up wizard when a user starts SmartSVN for the rst time. When upgrading SmartSVN, this license le will also be used, so users wont be prompted with an license expired message, but can continue working seamlessly. Note Typically, you will receive license les from us wrapped into a ZIP archive. In this case you have to unzip the contained license le into the default directory.

c 2012 WANdisco plc, www.wandisco.com

127

Chapter 12. Installation and Files

12.4

Command line arguments

SmartSVN supports a couple of command line arguments. --server-mode will just start up the core process and bring up the tray icon (see 10.8), if present. This startup mode is used for the Shell Integration (see 10). --exit will try to detect a running SmartSVN process and force this process to exit. This allows to stop SmartSVN programmatically. --transactions will bring up the Transactions Frame (see 5.1) instead of the Project Window (see 2) on startup. --repository-browser will bring up the Repository Browser (see 4) instead of the Project Window (see 2) on startup. project-path will bring up the Project Window (see 2) and load the project containing the specied project-path.

12.5

JRE search order (Windows)

On Windows, the smartsvn.exe launcher will search for an appropriate JRE in the following order (from top to bottom): Environment variable SMARTSVN JAVA HOME Sub-directory jre within SmartSVNs installation directory Environment variable JAVA HOME Environment variable JDK HOME Registry key HKEY LOCAL MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

c 2012 WANdisco plc, www.wandisco.com

128

Chapter 13 System properties/VM options


Some very fundamental options, which have to be known early at startup time or which typically need not to be changed are specied by Java VM options instead of SmartSVN preferences. Options suppied to the VM are either actual standard or non-standard options, like -Xmx to set the maximum memory limit, or system properties, typically prexed by -D. This chapter is mainly about SmartSVN-specic system properties.

13.1

General properties

Following general purpose properties are supported by SmartSVN.

smartsvn.home
This propery species the directory into which SmartSVN will put its conguration les; refer to Section 12 for details. The value of smartsvn.home may also contain other default Java system properties, like user.home. It may also contain the special smartsvn.installation property, which refers to the installation directory of SmartSVN. Example To store all settings into the subdirectory .settings of SmartSVNs installation directory, you can set smartsvn.home=${smartsvn.installation}\.settings.

13.2

SVN properties

Following properties are related to the core SVN functions.

svnkit.admindir
This property species the name of the directory in which Subversions working copy metadata is stored. By default, this is the .svn directory.

129

Chapter 13. System properties/VM options Example ASP.NET does not allow directories to start with a ., as .svn does. Therefore, to use ASP.NET in combination with SmartSVN, you can for example change the working copy metadata directory name to svn with this setting: svnkit.admindir= svn

smartsvn.tcp.connect-timeout
This property species the CONNECT timeout for repository connections. By default, this timeout is set to 60 seconds. Example With smartsvn.tcp.connect-timeout=10 you can set the CONNECT timeout to 10 seconds.

smartsvn.tcp.read-timeout
This property species the READ timeout for repository connections. By default,this timeout is set to one hour, which gives the server enough time to respond to time-expensive requests. On the other hand, if a server is not responding at all, SmartSVN may block for one hour, until it reports the problem. This may be annoying under certain circumstances and hence can be changed by this property. The timeout value is specied in seconds. Example With smartsvn.tcp.read-timeout=60 you can set the READ timeout to 60 seconds.

smartsvn.default-connection-logging
With this property you can enable the connection logging (see 2.5.13) by default for all commands. This can be useful when searching for connection-related problems, which occur only rarely. By default, this property is not enabled. Example Use smartsvn.default-connection-logging=true to enable connection logging by default. Note The connection.log le is freshly created on every start-up of SmartSVN. So immediately after the problem has occurred make a backup of this le, only then stop/restart SmartSVN (if necessary).

smartsvn.http-spool-directory
With this property you can dene a spool directory into which HTTP connection data is temporarily spooled. Spooling is the process in which server response is completely (fully) read rst and only then processed. This approach may result in a certain initial delay (notications usually displayed for certain operation will only be displayed after all data is fetched), but may be necessary in case the server uses to close connection when data it provides is not completely read in a prompt manner. c 2012 WANdisco plc, www.wandisco.com 130

Chapter 13. System properties/VM options In general spooling does not result in a slow down, as le system access is much faster compared to network access; the main drawback of spooling is that no events are generated while data is spooled, so you may perceive that the operation is signicantly slower than with spooling turned o. Example Use smartsvn.http-spool-directory=c:/temp/smartsvn on Windows or smartsvn.http-spool-directory=/tmp/smartsvn on Unix or Mac OS to enable HTTP connection spooling.

smartsvn.commit.disallowed-lename-characters
With this property you can congure which lename characters should be disallowed for committing. This property defauls to <>:"/\|?*, representing those characters which are either reserved on Windows, Unix or Mac OS. The purpose of this check is to ensure that committed les can be checked out on every platform. Example Use smartsvn.commit.disallowed-filename-characters= to disable the check for disallowed characters completely.

svnkit.wccopy.nomergeinfo
With this property you can congure svn:mergeinfo creation/modication on local copy (see 3.4.9) operations. Example Use svnkit.wccopy.nomergeinfo=true ation/modication. to skip svn:mergeinfo cre-

Warning! When setting this property to true, SmartSVNs behaviour is not fully compatible with Subversion 1.5 merge tracking.

13.3

User interface properties

Following properties are related to the user interface of SmartSVN.

smartsvn.lookAndFeel.usePlatformIndependent
This property switches to SmartSVNs own, platform-independent LooknFeel. Example To use SmartSVNs platform independent smartsvn.lookAndFeel.usePlatformIndependent=true LooknFeel, set

c 2012 WANdisco plc, www.wandisco.com

131

Chapter 13. System properties/VM options

smartsvn.lookandfeel
This property species the LooknFeel of SmartSVN. The value must be the fully qualied class name of a valid LooknFeel on your system. Example To use the Plastic LooknFeel from JGoodies Looks, put the looks*.jar into the lib directory (for non-Windows systems, you need to modify the launcher script, too) and set the following option smartsvn.lookandfeel=com.jgoodies.looks.plastic.PlasticLookAndFeel Note SmartSVNs standard LooknFeels have been optimized for SmartSVN. Changing the LooknFeel may result in the GUI less nice looking.

smartsvn.ui.font
This property species the font family which is used for SmartSVNs own LooknFeel. The value must be a valid Java font name. Example To change the font family to Dialog, you may use smartsvn.uifont=Dialog

smartsvn.ui.fontsize
This property species the font size which is used for the platform independent LooknFeel (property smartsvn.lookAndFeel.usePlatformIndependent needs to be set, too, on Windows). The value species the point size of the font, which defaults to 12.

smartsvn.ui.brightness
This property species the brightness of menu bars, toolbar, dialog backgrounds, etc. Valid values are in the range of 0.0 to 1.0. This property is only applicable, if SmartSVNs own LooknFeel is used, i.e. smartsvn.lookandfeel has not been changed.

smartsvn.ui.window-background-brightness
This property species the brightness of the White of window backgrounds, like the le table. Valid values are in the range of 0.0 to 1.0. This property is only applicable, if SmartSVNs own LooknFeel is used, i.e. smartsvn.lookandfeel has not been changed.

smartsvn.lookAndFeel.tooltipDisplayDuration
This property species the duration in seconds for displaying a tooltip.

c 2012 WANdisco plc, www.wandisco.com

132

Chapter 13. System properties/VM options

smartsvn.splashScreen.show
This property species whether to show the splash screen on startup or not. It defaults to true. Example Use smartsvn.splashScreen.show=false to disable the splash screen.

smartsvn.toolbar.textBelowIcon
This property species whether to show toolbar icon texts or not. Example Use smartsvn.toolbar.textBelowIcon=false to switch o toolbar icon texts.

q.lookAndFeel.treeStriped
This property species whether to show trees striped (alternating while/gray columns) or not. Example Use q.lookAndFeel.treeStriped=false to switch striping o.

13.4

Transaction-related properties

There are following VM properties related to the Transactions (see 5) views.

smartsvn.transaction.message-length
This property species the maximum commit message length which will be displayed for Transactions. Longer commit messages will be truncated to save memory usage. The default value is set to 256.

smartsvn.transaction.maximum-le-count
This property species the maximum le/directory count per revision which will be displayed for Transactions. If a revision contains more changed les/directories, it will be truncated and SmartSVN will add a note [File display limited] to the commit message. The default value is set to 1000.

smartsvn.transactions.connect-timeout
This property species the CONNECT timeout for repository connections established by the Transactions. The default value is set to 10 seconds. For details refer to smartsvn.tcp.connecttimeout (see 13.2).

c 2012 WANdisco plc, www.wandisco.com

133

Chapter 13. System properties/VM options

smartsvn.transactions.read-timeout
This property species the READ timeout for repository connections established by the Transactions (except of cache updates, which require a log command to be executed). The default value is set to 60 seconds. For details refer to smartsvn.tcp.read-timeout (see 13.2).

smartsvn.transactions.update-timeout
This property species the READ timeout during cache updates (which require a log command that may take signicant time until response). The default value is identical to smartsvn.tcp.read-timeout (see 13.2).

smartsvn.logcache.refresh-chill-out-cycle
This property species the chill out cycle (in counts of revisions) for building the Log Cache (see 5.3). It can be used to alleviate the server in perspective that many clients will be building the cache at the same time. The default value is set to 0 revisions, meaning no chill out cycle. Warning! Use this property only if necessary; it can slow down the build process of a Log Cache signicantly, making it even unusable.

smartsvn.logcache.refresh-chill-out-seconds
This property species the maximum number of seconds to sleep during a chill out cycle for building the Log Cache (see 5.3). This property is only used in combination with smartsvn.logcache.refresh-chill-out-cycle. The default value is set to 10 seconds. Example Use smartsvn.logcache.refresh-chill-out-cycle=1000 and smartsvn.logcache.refresh-chill-out-seconds=60 to have SmartSVN sleeping 60 seconds after every 1000 received revisions.

smartsvn.logcache.maximum-message-length
This property species the maximum length (in characters) of a commit message to be stored. Commit messages which exceed this limit will be truncated, ending with a special note that this truncation happened. The default value is set to 16384 characters. Example Use smartsvn.logcache.maximum-message-length=1024 to set the limit to 1024 characters.

13.5

JIRA plugin properties

Following system properties are related to the JIRA plugin (see 11.1). c 2012 WANdisco plc, www.wandisco.com 134

Chapter 13. System properties/VM options

smartsvn.plugin.jira.unreleased-versions-to-display
With this property you can congure the number of unreleased versions for which inprogress and open issues will be loaded (the default value is 3). Example Set smartsvn.plugin.jira.unreleased-versions-to-display=5 to increase to 5 unreleased versions.

smartsvn.plugin.jira.resolved-constant
If you are using custom workows, it may be necessary to recongure the constant which is sent when you select to resolve an issue (the default value of the constant is 5). Example Set smartsvn.plugin.jira.resolved-constant=31 to send 31 for resolving issues.

smartsvn.plugin.jira.load-all-issues
Use this property to load all issues (instead of only in-progress and open issues). This may require transferring of large amounts of data and is in general not recommended. Example Set smartsvn.plugin.jira.load-all-issues=true to have this property enabled.

13.6

Trac plugin properties

Following system properties are related to the Trac plugin (see 11.2).

smartsvn.plugin.trac.unreleased-versions-to-display
With this property you can congure the number of unreleased versions for which assigned, reopened and new issues will be loaded (the default value is 3). Example Set smartsvn.plugin.trac.unreleased-versions-to-display=5 to increase to 5 unreleased versions.

smartsvn.plugin.trac.incomplete-milestones-to-display
With this property you can congure the number of incomplete milestones for which assigned, reopened and new issues will be loaded (the default value is 3). Example Set smartsvn.plugin.trac.incomplete-milestones-to-display=5 to increase to 5 incomplete milestones.

c 2012 WANdisco plc, www.wandisco.com

135

Chapter 13. System properties/VM options

smartsvn.plugin.trac.resolved-constant
If you are using custom workows, it may be necessary to recongure the constant which is sent when you select to resolve an issue (the default value of the constant is xed). Example Set smartsvn.plugin.trac.resolved-constant=repaired to send repaired for resolving issues.

smartsvn.plugin.trac.load-all-issues
Use this property to load all issues (instead of only accepted, assigned, reopened and new issues). This may require transferring of large amounts of data and is in general not recommended. Example Set smartsvn.plugin.trac.load-all-issues=true to have this property enabled.

13.7

Other properties

There are following other VM properties available.

smartsvn.logcache.useURLasUUID
The Log Cache (see 5.3) uses repository UUIDs to distinguish between dierent repositories, i.e. to detect whether two repositories are equal even when dierent URLs are used to access them. This for instance happens when using dierent protocols, like ssh:// and https://. Although not recommended, sometimes a repository has been created from another repository just by copying the raw les. In this case both repositories will have the same UUID what will confuse the Log Cache. For such cases the distinction between repositories has to be based on their URLs. Example Set smartsvn.logcache.useURLasUUID=true to have this property enabled.

smartsvn.log.maximum-custom-properties
This property species the maximum number of custom property columns displayed within the Log frame (see 8.7) after having invoked Log|Load Properties. The default value is set to 10.

smartsvn.check-for-new-version
With this property the automatic/manual Check for New Version (see 2.5.13) can be disabled. Example Set smartsvn.check-for-new-version=false to disable the check. c 2012 WANdisco plc, www.wandisco.com 136

Chapter 13. System properties/VM options

smartsvn.output.maximum-le-count
With this property you can change the maximum number of les/directories which will be displayed in the Output area for each command. Example Set smartsvn.output.maximum-file-count=500 to display at most 500 les.

smartsvn.revision-graph.show-raw-mergeinfo
With this property the display of the raw svn:mergeinfo information in the Revision Graph (see 3.9.8) can be enabled. Example Set smartsvn.revision-graph.show-raw-mergeinfo=true svn:mergeinfo information. to display raw

13.8

Specifying VM options and system properties

Depending on your operating system, VM options and system properties are specied in dierent ways.

smartsvn.properties le
The smartsvn.properties le is present on all operating systems. Its located in SmartSVNs settings directory; refer to Section 13.1 for details. All system properties can be specied in this le. Note System properties are VM options which would be specied by the -D prex when directly providing them with the start of the java process. All options listed in this chapter are system properties and hence can be specied in the smartsvn.properties le.

Every option is specied on a new line, with its name followed by a = and the corresponding value. Example Add smartsvn.http.timeout=60 to set the HTTP-timeout to 60 seconds.

Microsoft Windows
VM options are specied in bin/smartsvn.vmoptions within the installation directory of SmartSVN. You can also specify system properties by adding a new line with the property name, prexed by -D, and appending = and the corresponding property value.

c 2012 WANdisco plc, www.wandisco.com

137

Chapter 13. System properties/VM options Example Add the line -Dsmartsvn.http.timeout=60 to set the HTTP-timeout to 60 seconds.

Apple Mac OS X
System properties are specied in the Info.plist le. Right click the SmartSVN.app in the Finder and select Show Package Contents, double click the Contents directory and there you will nd the Info.plist le. Open it in a text editor of your choice. Specify the system properties as key-string pairs in the dict-tag after the key with the Properties content. Example Use the following key-string pairs <key>Properties</key> <dict> ... <key>smartsvn.http.timeout</key> <string>60</string> </dict> to set the HTTP-timeout to 60 seconds. Specify a VM option by placing them in the string-tag to the VMOptions array.

Unix
System properties are specied e.g. in bin/smartsvn.sh within the installation directory of SmartSVN. You can specify a property by adding the property name, prexed by -D and appending = and the corresponding property value to the VM PROPERTIES environment variable. Multiple properties are simply separated by a whitespace; make sure to use quotes when specifying several properties. Example Add _VM_PROPERTIES="$_VM_PROPERTIES -Dsmartsvn.http.timeout=60" before the $ JAVA EXEC call to set the HTTP-timeout to 60 seconds.

c 2012 WANdisco plc, www.wandisco.com

138

Chapter 14 xMerge add-on


The xMerge (cross-merge) add-on helps to automate merging of moved and renamed les for single-source merges (see 3.6.1).

14.1

Introduction

The default merge implementation provided by Subversion lacks true rename support. The most recent stable version (SVN 1.6.x) currently is able only to raise a tree conict for a le which was copied or moved at some certain moment in history, if that copy breaks somehow normal merge process on that le. The user then has to manually x that kind of conict by running sub-merges or reverting modied les. xMerge inherits the default merge implementation. This means, that xMerge behaves the way default merge implementation does in case a le can be processed properly. In addition, xMerge also overrides the default merge behavior to process those les which are skipped by the default merge implementation.

14.2

A sample use-case

Diagram 14.1 illustrates a basic use-case of xMerge when working with a release branch. The release branch branch has been forked o the trunk. The branch should only receive the minimal amount of changes which are required to x a bug. In terms of revisions this means that only those revisions should be merged from trunk which are actually bugxes. Now, a common problem is that restructuring/refactoring in trunk may result in le moves/renames and hence xes to those les cant be merged back to the trunk using default SVN merge implementation anymore. The older a branch is the more pressing this problem can get. With default SVN merge, the solution is either to manually merge the bug-x revision by selecting the le in the branch and merging from the corresponding trunk le. This can be cumbersome for a larger amount of les and is error-prone. Or one could merge the necessary restructurings/refactorings to the branch, too, but this contradicts the requirement of minimal amount of changes required.

139

Chapter 14. xMerge add-on This is where xMerge comes into play. xMerge will be able to identify the corresponding le(s) in the branch. It will display an overview of the planned merge showing which les from the merge source will be merged to which les in the local working copy and on conrmation, properly perform that merge.

Figure 14.1: xMerge diagram

14.3

User Interface

To enable xMerge, select Enable xMerge for merging renamed/moved les in the Merge dialog (see 3.6.1). Optionally, select For xMerge, ignore simple copies on the Advanced page. When performing Merge, SmartSVN will now start a dry-merge run to collect information on what will happen during the merge. xMerge requires the working copy to be at a clean revision. It will ask you to update to the maximum revision found in your working copy, in case you have mixed revisions. This usually is a safe operation, however note that by the update missing les might be re-fetched, so its recommended to schedule such les for removal before performing the merge. If during this dry-run phase, les which will be skipped by SVNs default merge will be encountered or if option For xMerge, ignore simple copies had been de-selected will be encountered, the Merge Preview (see 8.10) will come up, containing the xMerge Resolutions control in the upper area. The xMerge Resolutions control shows all les which are processible by xMerge. For every le, the table displays the merge Source path, the selected Resolution, the Target path in the local working copy and the adjusted Copy From information. The resolution can be adjusted by the radio controls below the table which will also aect Target and c 2012 WANdisco plc, www.wandisco.com 140

Chapter 14. xMerge add-on Copy From. Resolutions can also be adjusted for multiple les at once by selecting those les and using the radio controls. Depending on the selected resolutions, the Directories/Files preview will show the overall planned merge result. Use Merge|Perform Merge to nally perform the merge as previewed.

Process by default SVN merge


Use this option to let SVNs default merge implementation process the le. This option will only be available, if the le is actually processible, i.e. if it wouldnt be skipped. This is typically the case for copied les, if option For xMerge, ignore simple copies had been selected in the Merge dialog.

Skip le
Use this option to not process the le by the merge. This option is available, if the le is not processible by SVNs default merge implementation, i.e. if the le would be skipped.

Apply source changes to


Use this option to apply the changes of the selected le (in the selected revisions) onto an existing working copy le. This option will be available, if xMerge could associate the source le with an existing le in the working copy.

Copy source le to
Use this option to copy the source le as it is to a new le in the local working copy. Optionally you may select and set copy-from to to adjust the history-information of the newly added le in the working copy: By default, SVN will link the added les history to that of the source le. For example, if branch/dir/oldfile will be merged to trunk/dir/newfile, trunk/dir/newfile will be linked with branch/dir/oldfile. In most cases, it will be more appropriate to link trunk/dir/newfile to trunk/dir/oldfile, if that le exists. The history link is adjusted this way when and set copy-from to has been selected. Copy source le to will be available for added, copied or moved/renamed source les. and set copy-from to will only be available for copied or moved/renamed source les for which the copy-source in the merge source could be associated with a corresponding le in the working copy.

Merge source changes with


Use this option to apply the changes of the selected le (in the selected revisions) onto the content of an existing working copy le, but store the merge result as a new le in the working copy. The history of the new le (copy-from) will be linked to the existing working copy le. c 2012 WANdisco plc, www.wandisco.com 141

Chapter 14. xMerge add-on This option is a kind of combination of Apply source changes to and Copy source le to and will be available if the source le has been moved/renamed in the selected source revisions and xMerge could associate this le with an existing le in the working copy.

14.4

Known Limitations

xMerge requires that les and directories have been moved or copied through proper SVN actions, so that the history links are correct. Content-related actions, like Merge|Show Changes are currently not working on preview les which are processed by xMerge, because the corresponding le contents have not been received during the underlying merge protocol. xMerge currently processes only les, hence for directories, Skipped-warnings may still be reported during the merge.

c 2012 WANdisco plc, www.wandisco.com

142

You might also like