1. Introduction
SmartSVN is a graphical Subversion client that is available for Windows, Mac and Linux.Using SmartSVN allows developers to work immediately rather than having to learn command-line terms first.
There are versions of SmartSVN available to support all versions of Apache Subversion from 1.6 to the latest stable 1.8 release.SmartSVN has two available editions:
- Foundation (free)
- Professional (paid), which has more powerful features and includes email support
SmartSVN is aimed at developers of all levels and abilities, from the complete beginner on a one-person project, to the enterprise developer managing several repositories of varying complexity and size.
Note: These documents apply specifically to SmartSVN 8.6.
1.1 Known issues
Known issues affecting the general release version of SmartSVN 8.6 are:
- Working copy queries fail if SQLite 3.8.1 to 3.8.3 are used. We recommend using 3.7.15.1 (or minimum 3.7.12) until this bug is resolved in Subversion 1.8.8.
- There are errors if libmagic is present and doesn't recognise the file type. The warning looks like this: /usr/share/misc/magic, 2180: Warning: <= not supported. If you receive this warning, fix these errors in the magic config file before proceeding.
- Trunk version of ISVNClient.properties callbacks with invalid path parameter: This is a bug in core Subversion and is expected to be fixed in Subversion 1.8.9.
- JavaHL ISVNRemote.getLog() fails for non-root path and HTTP protocol: This is a bug in core Subversion and is expected to be fixed in Subversion 1.8.9.
- Refresh (OS X): directories with non-ASCII characters and contained files may show up as missing: This is a bug in core Subversion and is expected to be fixed in Subversion 1.9.
- SmartSVN runs out of memory intermittently when graph is run on big repos with default -Xmx settings. To fix this increase the default -Xmx settings from 256 to 512.
- Moving from an older version of SmartSVN to version 8 or newer and updating your working copy may cause files to incorrectly show as having been modified. A full explanation of this issue along with a fix can be found on our Knowledgebase.
2. Getting started
First you need the SmartSVN install file for your chosen OS from the SmartSVN website.
2.1 Installation
2.1.1 Linux
- Extract the bundle to your preferred location.
Make sure that Java Runtime Environment version 1.7 or newer is installed on your system.Some Linux systems, e.g. Ubuntu or Fedora, let you install the Java Runtime Environment with their usual installation tools.
- Navigate to the new SmartSVN 8.6 folder and select the bin folder.
- Start the smartsvn.sh file and the SmartSVN Setup wizard should start.
2.1.2 Mac
- Open the downloaded SmartSVN .dmg file.
- Drag the SmartSVN.app to a directory of your choice, e.g. /Applications.
- Start the SmartSVN application from there.
2.1.3 Windows
- Extract the installer zip archive file to your local drive.
- Start the installer setup-8_5-rc-2-jre.exe and follow the steps.
- Start the created SmartSVN icon.
2.2 Check out
When you open SmartSVN for the first time you see the Project window with several options to get your files into SmartSVN.
- Select your required option and click OK. Usually you want to check out a project from an existing repository.
- Enter the URL for your Subversion repository.
When entering a filesystem path, SmartSVN offers autocomplete suggestions. For example, if you enter ~/ it lists the subdirectories. If you enter e:\foobar\baz it converts to file://localhost/e:/foobar/baz.
- Select the directories to check out. Click Show Revision to select the relevant revision to check out.
Sometimes you won't need to check out the complete trunk or branch of a project, but only a sub-directory. Some features, such as tags, don't work on sub-directories, so SmartSVN asks you whether to check out the necessary parent directory non-recursively. We recommend these efficient, non-recursive checkouts, also called sparse checkouts, in situations like this. - Select the repository directory you want to check out and click Next.
- Choose where your working copy will live on your local machine.
- By default SmartSVN checks out any subdirectories of the directory you select. To change this use the Checkout Depth dropdown list.
- Click Continue.
- Choose whether to add a new project into SmartSVN, and select a group if needed.
- Click Finish. The Project window opens.
If you are using Windows and a file has been created on Mac/Linux with invalid characters (such as trailing spaces or colons) you will see an error when trying to check out. To fix this you'll need to delete or rename the culprit files and commit them on Mac/Linux and then checkout/update the working copy on the Windows machine.
Your other options when starting a project are:
Open existing working copy | Use this option to open a working copy which already exists on your local machine (ie one you've checked out of the repository previously) and add it to your SmartSVN project list. |
Import project into repository | Use this option to add an unversioned local directory to your repository. |
Open existing project(s) | Open a project which already exists in SmartSVN. |
2.3 Project window
The Project window is the default display for SmartSVN. It shows a general overview of the status of your project:
By default, unchanged files are hidden in the Project window. To see them go to the View menu and select Show Unchanged Files.
- Directories and Files: show the SVN file system of your currently opened project (working copy). Various SVN commands on these directories and files are provided by the menu bar and the toolbar.
The icons next to the listed files depend on the files' state. They are one of:Unchanged File is under version control, not modified and equal to itsrevision in the repository, i.e. to its pristine copy. Unversioned File is not under version control, and only exists locally. Ignored File is not under version control, i.e. only exists locally, andis marked to be ignored. Modified (content only) The content of the file has been modified but not its properties,compared to its revision in the repository, i.e. its pristine copy. Modified (properties only) The properties of the file have been modified but not the content,compared to its revision in the repository, i.e. to its pristine copy. Modified (properties only) The content and properties of the file have been modified, comparedto 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 was added again. Copied File has been added with history. History-Scheduled A parent directory has been added with history, which implicitlyadds this file with history. Remote File does not exist locally, but only in the repository. Conflict An update command lead to conflicting changes either in contentor in properties. Merged The file has been merged. Incomplete A previous update was not completed.Run the update again to finish it. Name conflict There exists another file in the repository with the same name,only differing in use of upper/lower case.These files cannot be checked out on case-insensitive file systems.To fix this problem rename the corresponding files 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 file.Back up the contents of the directory, then remove it and update the file fromthe repository. Inaccessible The file's content is not accessible, so its state (modification)cannot be determined.It's probably locked by another application. Phantom The file neither exists locally nor is versioned, but is stillpresent in the working copy metadata (.svn directory). Case-Changed The case of the file name has changed on an operating systemthat is case-insensitive with respect to file names. Switched File is switched,compared to its parent directory. Tree Conflict The file is part of a tree-conflict. - Changes: shows the local modifications of the currently selected file.
- Output: shows logged output from executed SVN commands. Depending on the command, there can be several SVN operations available for the logged files and directories.
- Transactions: collects and displays log information from the repository.
Across the bottom of the project window is the Status bar:
- Section 1: shows information on the selected menu item, operation progress or the repository URL of the currently selected file/directory.
- Section 2: shows information on your current selection from the Directories or the Files frame, or no information if neither of these views is active.
- Section 3: shows information on the Refresh state of the project.
- Section 4: shows progress 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.
You can resize or remove any of the sections, and can double-click on a section title to maximize it.
3. Day-to-day use
3.1 Everyday commands
Most of the common commands you will need are in the SmartSVN toolbar:
- Update
- Commit
- Add
- Remove
- Move
- Revert
- Delete
- Fix
- Changes
- Annotate
- Log
- Graph
3.1.1 Update
Get the latest changes or a specific revision from the repository for the selected files/directory.
Select HEAD to get the latest changes. To get a revision, select Revision and enter the revision number. Select Recurse into subdirectories to also get changes made to subdirectories.
Advanced options
For sparse working copies, the Update option does not pull in files or directories of repository subtrees that haven't been checked out yet. Select Set depth to working copy to get new subtrees as well.
Selecting Allow unversioned obstructions to continue to update new files from the repository for which locally unversioned files already exist. Otherwise the update will be cancelled in these situations, enabling you to clean up these locally unversioned files beforehand.
Select Include Externals to descend into externals.
3.1.2 Commit
Commit, i.e. send, the changes in the selected files/directory to the repository.
The commit wizard guides you through these steps:
-
Configuration:
This page is only present when committing one or more directories.
Select Recurse into subdirectories to scan changes from the selected local directory and also from subdirectories. When recursing into subdirectories, select Descend into externals to also scan for changes in external working copies. When you click Next the file system of your project is scanned. This may take some time.
-
Repositories:
This page is only displayed if you select the option Descend into externals on the Configuration page and at least one committable entry within an external working copy has been found.
All your external working copies are listed with their Local Path and URL. The project's working copy is also listed with local path ". ". You can select or deselect each working copy for the commit.
When committing to multiple repositories, every commit creates its own revision in the corresponding repository. Therefore, atomicity of such commits cannot be guaranteed. This, for example, means that the commit to one repository can succeed while another one fails. While fixing the failing commit another person might already have updated their working copy and only have received the successfully committed revision. This might result in (temporary) inconsistencies in their overall project.
You can choose whether to commit the selected working copies with a single commit message or with individual ones. If you are committing multiple working copies with different Bugtraq-Property configurations, you have to use individual commit messages to have the Bugtraq-Property functionality available on the Files page.
-
Files:
This pages shows a list of all files and directories that were found to be committable according to the selected options from the Configuration page, and from your Preferences. To exclude a file or directory from the commit deselect it here.
SmartSVN also displays certain kinds of files that are not committable, e.g. conflicted files. This is a caution not to forget to resolve these files' problems and commit them as well, if necessary.
Expand the Differences button to show the differences for the currently selected file in the lower part of the Commit dialog.
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 field. The popup menu shows 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. Use
+ keystroke to trigger a file name completion, based on all of the files that have been selected for the commit. Depending on how Bugtraq-Properties are configured for the current working copy, there may be an additional Issue ID input field. The name of this field varies, depending on the Bugtraq-Properties. Its content will be appended/prepended to the entered commit message afterwards, forming the final commit message.
If the spell check is configured, SmartSVN checks the entered Commit Message for basic spelling mistakes. The spell check ignores file paths, i.e. strings containing a '/', and 'issue IDs' which are part of the commit message and which can be recognized by the Bugtraq-Property.
Working copies pointing to the same repository (the URL identifies these) can be committed together. Therefore, SmartSVN will have to perform as many commits as the different repositories involved in the overall commit process.
By default, SmartSVN warns you in case of an empty commit message. You can disable this warning in Preferences.
If you selected Descend into externals and multiple working copies on the Repositories page have been selected for committing, there will also be a topmost Path drop-down list. All other items on this page will be related to the selected path. In particular, you will have to enter a Commit Message for each path.
-
Locks:
This page is only displayed if the files or directories selected for the commit have been found to contain locked files during scanning.
Select Keep locks for committed files to keep the files locked even after having them committed. Select Unlock committed files to unlock them after the commit. In the latter case, you can additionally select unchanged but locked files that were detected during the scan and which should be unlocked on a successful commit as well.
Click Finish to start the commit.
3.1.3 Add
Use Add to schedule files or directories to add to your repository. If you're adding a directory you have the option to Recurse into subdirectories, which, when selected, causes all subdirectories and files from subdirectories to be added too.
When a file is added, SmartSVN automatically applies certain properties to the file. Most important is the automatic detection of the file's MIME-Type, which can be text or binary. You can change this, or set other property defaults in the project settings.
3.1.4 Remove
Use this to schedule the removal of files or directories from your repository.
Select Remove from SVN control and delete locally to schedule the files or 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 files or directories remain unversioned.
By default, SmartSVN refuses to remove files or directories that have local modifications, as well as directories that contain modified or unversioned files. Select Force Removal (ignore local modifications, etc.) if you want to remove these items anyway.
3.1.5 Move
Use this to move and/or rename a file or directory that is already under SVN control. The file with the old name will be scheduled for removal, and the file with the new name scheduled for addition. This command preserves the history of the moved item.
You can also use drag-and-drop to copy or move files and directories.
There is also a special mode of this command that you can use to tell SmartSVN 'after the fact' that a file was moved. For this to work, only two files can be selected: One that is missing or removed, and another that is unversioned, added or replaced. SmartSVN then removes the missing file, if necessary, add the unversioned file,if necessary, and connects the history of the added file to that of the removed file.
3.1.6 Revert
Use this to revert the local changes of the selected files or directories. For directories, you can Revert Recursively, i.e. to recurse into subdirectories. If deselected, only the properties of the directory itself are reverted.
Be careful before reverting a file or directory because all local modifications will be lost.
- Added and copied files/directories are unscheduled for addition and returned to unversioned state.
- Removed files/directories are unscheduled for removal and restored with their content and properties taken from the pristine copy.
- Replaced files/directories are unscheduled for replacement and restored with their content and properties taken from the pristine copy.
- Modified files/directories are restored with their content and properties taken from the pristine copy (overwriting local changes!).
- Missing files are restored with their content and properties taken from the pristine copy. Missing directories cannot be restored, because the pristine copy is also missing. You'll need to update your working copy instead.
- Conflicted files/directories are restored with their content and properties taken from the pristine copy, ignoring local changes which caused the conflict.
- For Case-changed files their original file names are restored and modifications in contents/properties are reverted.
3.1.7 Delete
Use this to delete local files, or unversioned or ignored directories.
Be careful before deleting a file or directory because you cannot recover unversioned items.
3.1.8 Fix
Use this to fix or 'repair' the selected directory or files. This option is only applicable for certain, unusual working copy states:
Case-changed files
SVN repositories and working copies are generally case-sensitive. This can cause problems when working on a case-insensitive operating system, like Microsoft Windows or some file systems on Apple Mac OS, and changing the file name's case (upper-case to lower-case, etc.). Because of SVN's working copy format and the pristine copies, it's technically not possible to handle such a file name case change.
One solution is to avoid this situation by either only performing file name case changes on an operating system which supports case-sensitive file names, or directly in the repository by using the Repository Browser.
However, a file name case change can happen on a case-insensitive operating system, e.g. because of defect software tools, etc. SmartSVN detects such invalid changes and puts the file into a case-changed file state, see Rare Primary File States. Fix now changes the file name case back to its original form as found within the pristine copy, resolving this problem.
Nested roots
A nested root (see Primary Directory States) 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 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. This leaves a missing directory at its original location and introduces a nested root at its current location.
Fix offers the following solutions for nested roots, depending on their origin:
- Mark as Copied converts 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 off the working copy metadata (.svn directories) for this directory and all of its children. This makes 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, because unversioned directories can be added afterwards, though their history is lost.
Added-missing directories
If a directory has been scheduled for addition and has been locally deleted afterwards (i.e. the directory and its .svn subdirectory are missing), the directory is in Added-missing state.
Such directories are actually only a leftover entry in the parent directory's metadata directory (.svn). The resolution is to Revert them, which is what this command does.
3.1.9 Changes
Changes shows you the difference between locally modified files and the pristine copy. From there you have several options:
- Refresh: refresh the file contents from the file system and recalculate the differences.
- Previous Change: navigate to the previous change within the currently selected file.
- Next Change: navigate to the next change within the currently selected file.
- Ignore Whitespace for Line Comparison: when selected, two lines are treated as equal, if they only differ in the number, but not in the position of whitespaces.
- Take Left: overwrite the local file changes with the content of the pristine copy.
- Take Right: overwrite the pristine copy with the local file changes.
When you're happy with any changes made, click Save.
3.1.10 Annotate
Use this to view the history of the selected file on a per-line basis.
On the Configuration tab, you can specify the date range over which to run the Annnotate operation.
On the Advanced/ tab, select Treat even binary revisions as text ("force") to continue the Annotate operation even when it encounters one or more binary revisions of the file. This option can be necessary if the MIME-Type of a file was changed, e.g. from binary to text in some earlier revision, and the file had text content throughout. In case the file actually had binary content in an earlier revision, parts of the annotate output might contain junk.
3.1.11 Log
display the log, i.e. the commit history, of the selected file or directory. The Log command opens the Log window which shows the history of a versioned file or directory ('entry').
Log window
The revisions table shows all revisions where changes were made to the selected file or directory. You can filter out revisions by using the Revision Filter field on the top right of the Revisions table. To the right of the Revisions table, detailed Revision Info of the currently selected revision is displayed.
The lower part of the window shows the Directories and Files views for the selected revision. The displayed structure is restricted to the files and directories that are children of the log context root. All other files and directories that have been modified 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 is either the corresponding project root directory, or the Externals root directory. The context root can be enlarged to the corresponding Project Root if necessary.
If merged revisions are loaded via Log|Load Merged Revisions, 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.
3.1.12 Graph
Use this to open the Revision Graph for the selected file or directory. The Revision Graph is a standalone window that allows you to browse the history of a repository, which can be either the history of the entire repository, or the history of some directory or file inside the repository.
The Revision Graph consists of a table of all revisions that make up the history of the selected file or directory, and a graph on the left side of the table that shows the parent-child relationships between the revisions. The graph also displays branching and merging points.
What happens when you open the Revision Graph depends on the option Show dialog to allow root selection in the Revision Graph preferences. If enabled, opening the Revision Graph opens a dialog where you can select the root directory for which the Revision Graph should be produced. Additionally, the dialog enables you to specify whether to include modified files and directories beneath the root directory in the Revision Graph, via Report children.
The Revision Graph consists of several views:
- The Revisions view is a table of revisions with a graph showing the parent-child relationships between the revisions.
- The Revision Info view shows various attributes of the selected revision, such as commit message, revision number, commit date, author, etc.
- The Directories and Files views provide a file manager-like view of the files that were modified as part of the selected revision. The Files view content depends on the selection in the Directories view. That is, it shows all modified files in the revision beneath the directory currently selected in the Directories view.
Revisions view
The Revisions view lists all revisions in the repository sorted by date, with the newest revisions on top.
The various table columns display a certain revision attribute, such as Message and Revision. You can hide and unhide columns by right-clicking on the column header area and selecting or deselecting entries in the context-menu. You can also reorder the columns by dragging and dropping the column headers.
The Message column contains a graph showing the parent-child relationships between the revisions. Generally, the graph consists of vertical lines of different color, each representing a branch of development. These branches may split or merge to represent branching and merging operations that occurred at some point in the repository history. There are four main types of relationships, expressed by different line styles:
- Normal parent-child relationship: this is the default relationship when performing a new commit. It's displayed by thick, colored lines.
- Complete merge relationship: this is set up by performing a merge commit for which all source revisions have been merged into the target. It's displayed by thin, colored lines when having Merge Arrows loaded by Query|Show Merge Arrows.
- Partial merge relationship: this is set up by performing a partial merge (cherry-pick) for which not all source revisions have been merged into the target. It's displayed by thin, colored, dashed lines when having Merge Arrows loaded.
- URL relationship: this exists between branches which have the same URL, but are not related. This is typically the case, when removing and re-adding a branch. It's displayed by thin, gray lines when having View|Join Same Locations selected.
At the end of each branch, you will find a revision that has a colored marker attached to it, i.e. a colored box containing the name of the branch the revision belongs to, such as trunk or feature-branch. These markers move along as you commit into the respective branches. In addition to the branch markers, there are also markers for tags, labelled with the names of your tags, e.g. 1.0 or 1.5-beta-1.
On the top right of the Revisions view is a Filter text field that allows you to enter expressions for filtering out some of the revisions in the Revision Graph. This filter works just like the File filterone on the file table. Additionally, the drop-down menu on the left of the Filter field allows you to include or exclude certain revision attributes from being matched against, namely Author, Branch and Message. For example, if only the Author field is selected, the filter expression entered into the Filter field is only matched against the Author fields of the revisions.
To the right of the Filter field is a drop-down menu for selectively including or excluding branches from being displayed in the Revision Graph. With this, you can, for instance, configure the Revision Graph to only display the branches branch1 and branch2.
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 SVN's mergeinfo for every displayed revision from the repository, which may take a while. SmartSVN caches this mergeinfo for the current graph, so subsequent invocations of mergeinfo-related queries are performed much faster.
Merge coloring
By default, lines are colored by chunks, where coloring changes at forks. When using View|Merge Coloring, for the currently selected revision ('target') SmartSVN classifies (and colors) every other revision into one of the following categories:
- Merged Now: The revision has been merged directly at and to the selected target (by default displayed using light green).
- Merged: The revision has been merged into the selected target, but not at the target's revision itself (by default displayed using dark green).
- Not Yet Merged: The revision has not yet been merged into the selected target (by default displayed using light red).
- Not mergable (normal revision): The revision is in the ancestor line of the selected target and hence can't be merged (displayed using black).
- Unknown: Used when no merge information is present for the selected target (displayed using gray).
You can configure the colors in the Revision Graph settings.
3.2 Branches and tags
3.2.1 Create a branch
To create a branch first open your working copy, select the folder you want to copy to your new branch, then choose Tag+Branch then Add Branch.
The Add a branch pane opens:
Enter the branch name and edit the commit message if required:
When you have included all the information, click Add Branch. SmartSVN automatically commits this change to the repository so you may need to provide your login credentials.
When the commit is finished, update your working copy:
Your new branch folder now shows in your working copy tree, by default in the branches folder.
3.2.2 Create tag
Highlight the folder you want to save as your tag. Typically this is a branch that's now a complete version of your project and ready to release. Click Tag+Branch, then Add Tag:
The Add Tag pane opens. Add your tag name and edit the commit message as required:
Click Add Tag, then update your working copy when SmartSVN has created the tag:
You can now see your new tag in the Tags folder in your working copy.
3.3 Merging
Select the branch you want to merge from your directory listing, and choose Modify|Merge:
The Merge pane opens. Enter the name of the branch you want to merge in:
You can also specify a revision or range of revisions to merge if you want. When complete click Merge. Fix any conflicts if they arise. Your merge is now complete.
If you want to merge two different branches into a third branch, select the branch you wish to merge the two sources into and choose Modify|Merge from 2 Sources:
A different pane opens. Enter the names of the two branches you want to merge, selecting specific revisions for either or both if needed, then click Merge:
When you have resolved any conflicts, your merge from two sources is complete.
3.4 Resolving conflicts
When working with Subversion you may find conflicts, e.g. after a merge or if a file has been changed by someone else since you last checked it out. If it's a file conflict (for example, a file with the same name but different content exists in two branches you've merged) you'll need to choose which version of the file you want to keep.
To do this, right click on the file in the Files window at the top and choose Mark Resolved:
A Content pane opens, listing file actions:
When you've chosen whether to keep your original or overwrite it with the new file click OK.
If it's a content-based conflict, you need to decide which content you want to keep: your own work, the new content coming in, or a mixture of both. To resolve this view the Conflict Solver. Right click on either the conflict warning in the Output window, or the file in the Files window:
The Conflict Solver window opens:
The working copy version of the file is shown in the left window, the new version of the file in the right, and your edits should be done in the middle window. When you've added the content you want to keep in the middle window, click Save in the top left, then close the window. Your conflict is now resolved.
Remember to commit your changes to the repository.
4. Menu guides
A lot of the power of SmartSVN comes from the many ways in which you can do things, and the ways you can customize SmartSVN to work the way you need to. This section describes the menus in SmartSVN, and the options available to you:- SmartSVN menu
- Project menu
- Edit menu
- View menu
- Modify menu
- Change set menu
- Tag+Branch menu
- Query menu
- Properties menu
- Locks menu
- Changes menu
- Transactions menu
- Window menu
- Help menu
4.1 SmartSVN menu
4.1.1 About SmartSVN:
About SmartSVN contains general SmartSVN infomation, including version number, build date, and licensing information.
4.1.2 Preferences
The application preferences define the global behavior of SmartSVN, regarding UI, SVN commands, etc. These settings apply to all projects in SmartSVN:
On start-up
You can 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 the root paths of certain projects are not valid any more, you are asked whether these projects should be removed from the project tree.
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 Confirm closing selected, you are always asked to confirm that you want a project closed.
Authentication
The Authentication page contains all the settings needed for establishing connections to repositories. This includes authentication information, such as user names and passwords.
When opening a working copy, SmartSVN automatically creates a repository profile for the working copy, if no such profile exists yet. A repository profile is a collection of all the information needed to connect to the repository associated with the working copy. The profile is incomplete in the beginning and is completed as needed. For instance, as soon as you specify a user name and password, or a certificate, to perform operations that require access to the repository, the information you provided is stored in the profile.
If you select an incorrect certificate you are not asked for new credentials (due to the way Subversion handles the error). To resolve this and add the correct certificate you need to remove the profile and re-enter your credentials.
The table on the Authentication page lists all existing repository profiles and their associated authentication information. Use the Edit and Delete buttons to edit and delete profiles, respectively.
PasswordsUse the Show Passwords button to display the passwords in the Password/Passphrase column in plain text. The Change Master Password button allows you to set, reset and change the master password used for encrypting all stored passwords.
You have the option to store all passwords needed to access repositories in SmartSVN's password store. This password store is located in the password file, which is in SmartSVN's settings directory.
You can protect the password store with a master password. Each time you start SmartSVN, this master password must be entered as soon as SmartSVN tries to access the password store for the first time. The entered password is kept in memory while the program runs, so you don't have to enter it again for the rest of the current session. You may choose Don't use a master password if you don't want the password store to be protected with a master password. However, this option is only recommended if you can make sure the master password file itself is protected against unauthorized access.
Click Change Master Password on the Authentication page in the preferences to set, reset or change the master password. Use Change master password to change the current password. This preserves the stored passwords, but requires that you supply the Current Master Password.
Note: you don't need to enter the current master password if you are currently working without a master password. If you have forgotten the master password, select Set new master password. In this case, all previously stored passwords are discarded. Enter the New Master Password and Retype New Master Password. If you leave both fields blank, you continue to work without a master password, i.e. as if you selected the option Don't use a master password when you were asked to set the master password.
Proxies and tunnels in SmartSVN 8.6 use the Subversion configuration.
You can find more information on this here and here.
User interface
Use background color in file table to indicate certain states. This enables you to control whether the file table on the Project Window can change its background color to indicate certain table states. For example, the table may have a yellow background to indicate it's currently showing files that match the filter pattern entered in the filter text field on the top right of the file table.
Select Show file and directory tooltips to toggle the display of tooltips for the Directories tree and the Files table within the Project Window.
For File Name Matches you can configure the filename search and filter features in SmartSVN:
- Exact case: Requires the search pattern and file name to match in case.
- Ignore case: Ignores the case for matching search pattern and file name.
- Smart upper case: Lowercase characters in the search pattern can match both upper and lowercase characters in the file name. But uppercase characters in the search pattern match only upper-case characters in the file name. Examples: SMF matches SuMainFrame, but not SuMainContentFrame. fileS will match FileSignature>, but not Files.
Select Nest in System Tray to have SmartSVN show a System Tray icon. It's available for Microsoft Windows, most Linux desktop managers and other operating systems that support tray icons.
Configure 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 effect on SVN operations. We recommend that you restart the application after changing these formats.
With Recursion options you can select whether to use Basic or Advanced recursion options. By default, SmartSVN offers a basic option Recurse into subdirectories (or a similar name) which lets you operate either only on the directory itself, or on the directory and all contained files and subdirectories, i.e. recursively.
Switching to Advanced recursion offers the following depth levels:
- Only this directory only operates on the directory/file itself.
- Only file children operates on the directory and its directly contained files.
- Immediate Children (files and directories) operates on the directory and its directly contained files and subdirectories, but not on files or directories within these subdirectories.
- Fully recursive operates on the directory, contained files and subdirectories recursively.
Actions - Commit
- Select Show directory configuration page if the commit wizard should display the configuration page with directory-related options, e.g. subdirectory recursion options.
- Select Skip Change Set entries to ignore changed files or directories that have already been assigned to a Change Set.
- Select Detect moved and renamed files if you want SmartSVN to detect files that are most likely renamed or moved. These files will not simply be added and removed, but marked as copied.
- Select Suggest To commit further files and Add unversioned files and directories to also report unversioned (most likely new) files and directories. Select Remove missing files and directories to also report missing (most likely obsolete) files and directories.
- Select Remove removed parent directories to make SmartSVN also scan parent directories of the files/directory that 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 are also suggested for the commit.
- To clean up all empty directories within your project, you can use Tools|Remove Empty Directories, see Remove Empty Directories.
- 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.
- Specify to Remember up to a specific amount of entered commit messages for each project.
-
Select For File Commits if you want to be warned for potentially missed files when performing a commit:
- Select Do not warn for potentially missed files or directories to switch off all warnings.
- Select Warn for potentially missed directories, just up the root to receive a warning if you have selected all visible committable files and any of their parent directories is modified (containing properties changes).
- Select Warn for any potentially missed directories to receive a warning if you have selected all visible committable files and there are any more modified directories in the project.
- Select Warn for any potentially missed directories and files to receive a warning if you have selected all visible committable files and there are any more modified directories or committable files.
Actions - Open
With Don't open or compare more than X files at once, you can specify an upper limit beyond which you will be asked before a set of files is opened together. We recommend that you do not set this value too high, to prevent accidentally opening a large number of files.
Actions - Refresh
- Choose Recursively scan unversioned directories to make SmartSVN descend into unversioned directories and display the complete unversioned subtree. Otherwise, only the unversioned root directory itself will be scanned and displayed.
- With Manually Refresh you can configure how the manual Refresh via View|Refresh (see Directory Tree and File Table) behaves. All options take into account the scanned/unscanned state of the working copy.
- You have the option to refresh Always root directory. In this case the directory selection in the tree does not matter. The whole project is always refreshed. This option is the most expensive in terms of system resources, but guarantees that after changing the selection in the tree, displayed data is up-to-date (relative to the last refresh time).
- You can also choose to refresh only the Selected directory recursively. This option is useful if you know you are only working in a specific part of your 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 because it is the most selective. However, it requires you to always be aware of which directories you have refreshed and therefore which information displayed in the directory tree, and file table, is actually up-to-date.
- 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.
Actions - Revision Graph
If you select Show dialog to allow root selection, opening the Revision Graph initially shows a dialog with various options, e.g. the root directory for which the Revision Graph will be created.
Colors 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 SmartSVN's default values.
Built-in text editor
These settings are used as a default for all text-displaying and editing views of SmartSVN, such as the File Compare, the Conflict Solver, the Annotate and the Changes view.
Font: Choose the Font Family and the Font Size to be used by SmartSVN's text components.
Colors: Customize the colors used by SmartSVN's text components. Use Reset to Defaults to restore the default settings.
Behavior: Configure various text editing features.
Tools - File Compare
Here you can configure external file compare tools to use instead of the built-in File Compare.
You can associate a specific File Pattern with a file comparator. You can either choose to use the Built-in text file comparator, an External diff tool or an External viewer.
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 detects the content type text/binary itself by inspecting the file. This is the same as if svn:mime-type has not been set at all.
External Diff ToolsThis is defined by the operating system Command to be executed, along with its Arguments. Arguments are passed to the Command as they would be passed from the OS command line. The optional place holders ${leftFile} and ${rightFile} will be substituted by the absolute file path of the left and right file to compare, respectively. In cases where SVN-internal files like the pristine copy is used for comparison, the content of this file is copied to a temporary location and this temporary file is passed as a parameter. The optional place holders ${leftTitle} and ${rightTitle} will be substituted by the left and right file title, respectively, which SmartSVN would use when displaying the file contents with its internal file comparator.
Furthermore, the place holders ${leftEncoding} and ${rightEncoding} will, if used, be substitued by the encoding of the left and right file, respectively.
External ViewersAn external viewer is defined by the operating system Command to be executed, and its Arguments. It's executed two times, once for the left and once for the right file to 'compare'. Arguments are passed to the Command as they would be passed from the OS command line. The optional place holders ${file} will be substituted by the absolute file path of the left and right file to view, respectively.
Tools - Conflict Solver
Here you can configure external tools which should be used instead of the built-in Conflict Solver.
You can either choose to use the Built-in Conflict Solver or an External Conflict Solver. An external conflict solver is defined using the operating system Command to be executed, along with its Arguments.
Arguments are passed to the Command as it would occur from the OS command line. The place holders ${leftFile}, ${rightFile}, ${mergedFile} and ${baseFile} can be used, which will be substituted by the absolute file path of the left, right and resulting merged file, respectively. Furthermore, the place holder ${encoding} can be used, which will be substituted by the encoding used for the file.
Transactions
- For Refresh every select the interval in minutes for which all active Transactions views should be refreshed.
- To distinguish transactions of a project from those of additional URLs which are watched, project transactions will be labeled by a Project Identifier.
- If the option Ask for Master Password if required is enabled, you will be asked for the master password as soon as SmartSVN tries to perform a Transactions refresh. If disabled, the Transactions refresh will be silently ignored until you enter the master password for the first time.
Spell checker
You can define 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.
The Dictionary File has to be in MySpell or Hunspell format. The File for My Own Words is a simple list of words.
Depending on the number and size of the dictionary files, the memory consumption of SmartSVN can increase significantly.
If you have configured multiple dictionaries, text fields for which spell-checking is supported offer a Language pop up 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 file with general expressions and one with domain-specific expressions. Use Best Matching is useful to build a super-dictionary containing multiple languages and have SmartSVN detect which dictionary fits better for a given text.
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 fits 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.
Check for New Versions
Here you can set the default behavior for SmartSVN updates, including whether they will be downloaded and installed automatically.
4.2 Project menu
For checkout information see Checkout.
4.2.1 Open Working Copy
To create a project from an already versioned local directory, use Project|Open Working Copy and specify the local Versioned Directory. On the Project page, select to Open in new project for this working copy, specify the project's name and specify an optional group for the project. Select Add to current project to add the working copy to the currently open project (if present). If there is already a project which contains this working copy, select Open existing project to open this project. Alternatively, you can select Don't manage as project to just create a temporary project for this working copy.
4.2.2 Edit Working Copy
If the location of a working copy has changed, use Edit Working Copy to point to the new location.
4.2.3 Remove Working Copy
Use this to remove a working copy from the project.
4.2.4 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 specified directory will be put under version control using this command.
First, select the unversioned Directory which you want to import into the repository.
Choose the Repository into which you want to import.
After switching to this page, it takes a few moments until the first level of the repository is scanned. If you look into deeper levels of the repository by expanding the directory nodes, these levels will be scanned also. Use the Create Directory tool button to create new directories in the repository.
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 you've 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.
On this page you can configure to which project the imported working copy will be added. Select one of the following options:
- Add a new project for this working copy, specify the project's name and specify an optional group to which the project will be added.
- Add to current project to add the working copy to the currently open project (if present).
- Don't manage as project to just create a temporary project for this working copy.
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 configure which files/directories of your local file system should actually be versioned in the repository. From the Edit menu you can use Add and Ignore on files and directories. Furthermore, for files you can adjust properties using the respective commands from the Properties menu. After the project has been fully configured, use Modify|Commit to do the final import into the repository.
4.2.5 Set Up Local Repository
Use Project|Set Up Local Repository to set up a new local SVN repository.
First, choose the location of your local repository.
Click Finish to set up your repository.
Next, choose the repository URL.
Choose your import location.
Choose which project and group (if any) your repository will be part of.
4.2.6 Open or manage projects
With the Project Manager (Project|Open or Manage Projects) 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.
There is one special group Sorted project area which receives allnew projects.This group is sorted and hence works like a sorted project list.If you don't need to group projects, simply let this group maintain the projectlist for you.
With Rename you can change the Name of an already managed project or a group. Use Delete to remove projects from the project tree; neither the local directory itself nor any other filesystem content will be affected by this operation.
You can rearrange the entries in the project tree with Drag-and-Drop. 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. If you Delete a group, only this group will be deleted. Projects or groups contained within the group will not be deleted.
4.2.7 Close
Use this to close the current active project window.
4.2.8 Manage 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. It stores and supplies the raw log information as received from the server and can supply them to various commands later on. This can increase log performance significantly and also leads to reduced network traffic.
When Log information is requested for the first 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 to let SmartSVN index the whole repository. The reason for this is that logs of a certain 'module' can have links to other modules, due to the way Subversion's Copy mechanism works. Sometimes repositories can be very large and you may be interested only in a few modules of the whole repository. In this case it may be more efficient 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 differences 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 repository's database directly or by changing revision properties, e.g. when another user has performed Change Commit Message.
Manage Log Caches
Use Project|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 first requested for that URL. This choice will be remembered and typically doesn't need to be changed afterwards. If necessary, 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 up the Log Cache initialization dialog again.
Select Rebuild for a Local Log Cache to rebuild it from repository log information. In general it's recommended to rebuild caches completely by selecting All unless you know that only log information Starting with a certain revision had been changed.
StorageThe Log Cache information is stored in the subdirectory log-cache in SmartSVN's settings directory. For every Log Cache, there is a separate subdirectory containing the server name and repositoy path. This is typically sufficient to quickly locate the cache for a specific repository. In case there are multiple subdirectories with the same name, only differing in the trailing number, you can have a look at the contained urls files. 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 files while SmartSVN is running, otherwise the results will be unpredictable.
4.2.9 Settings
The project settings affect the behavior of various SVN commands. Contrary to the global preferences, the project settings only apply to an individual project. You can edit the settings of the currently opened project via Project|Settings.
The top of the dialog shows the Root Paths for the current project. Use Change to modify these paths to, for example, add other root directories, or to change a root directory after the corresponding SVN working copy has been moved on your local disk.
Text File Encoding
The text file encoding affects only the presentation of file contents, for instance when comparing a file, and it will only be used for the file itself if no charset has been specified by its MIME-Type property. The text file encoding settings are not relevant for SVN operations itself, which generally work only on the byte-level.
With Use system's default encoding, SmartSVN will automatically use the system's default encoding when displaying files. When changing the system encoding later, the project settings are automatically updated.
Alternatively you can choose a fixed encoding with Use following encoding.
Scan
The Scan settings specify whether SmartSVN scans the Whole project or Only root directory when opening a project.
Generally we recommend using the Whole project option, because features like searching files in the table, etc. rely on having the whole project structure in memory. However, when you are working with large projects its sometimes better to scan the file structure on demand to avoid high memory consumption.
Working copy
The option (Re)set to Commit-Times after manipulating local files tells SmartSVN to always set a local file's time to its internal SVN property commit-time. Especially in case of an updating command, this option is convenient to get the actual change time of a file and not the local update time.
Apply auto-props from SVN 'config' file to added files tells SmartSVN to use the auto-props from the SVN 'config' file, 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 files after merging to always keep the auxiliary files (left, right and base) after a file has been merged by the Merge or by the Merge from 2 sources command. These files will be put into merged state which is similar to the conflict state however without having actual conflicts. For merged files you can use the Conflict Solver to review merge changes in detail and you can finally use Mark Resolved to mark the file as resolved and to get rid of the auxiliary files.
Global IgnoresThe Global Ignores define global ignore patterns for files/directories which should in general be ignored within the current project. This is contrary to local ignores, which are only related to a specific directory. You can completely deactivate Global Ignores by Deactivated. With Use from SVN 'config' file, the same ignore patterns will be used as by the command line client. Independently of the command line client, you can enter your own patterns via Use following patterns. The Patterns are file name patterns, where '*' and '?' are wildcard symbols, interpreted in the usual way.
Binary FilesChoose Use MIME-type registry from SVN 'config' file to use the corresponding file which is also used by the command line client. Choose Use following patterns to specify custom Patterns, for which matching files will always be added with binary MIME-type. The wildcard symbols '*' and '?' can be used in the usual way.
EOL StyleThis option specifies the Default EOL-Style, which is used when adding a file:
LocksUse When adding files, set 'Needs Lock' for to specify for which files the Needs Lock flag should be set when they are added. With No file, the 'Needs Lock' property will not be set. With Binary files the property will only be set on files which have been detected to have binary content. With Every file the property will be set on every file.
When committing files or directories, SmartSVN will scan for locked files. Choose here whether to suggest to Release Locks or to Keep Locks for those files on the 'Locks' page of the commit wizard.
Enable Automatically scan for locks and enter the corresponding interval in minutes to repeatedly refresh the files' lock states.
Keyword Subst.This option specifies the Keyword Substitution default, which is used when adding a file.
ConflictsBy default, conflicting files will receive new extensions like 'mine' or '.r4711'. Here you can specify extensions which should be preserved in case of conflicts. Choose either Use from SVN 'config' file or Use following extensions and enter the file name Extensions which should be preserved.
4.2.10 Default settings
Projects are created by various commands. For reasons of simplicity, in most of these cases, there is no configuration 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 configure the same properties as for a concrete project.
4.3 Edit menu
4.3.1 Stop
This 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.
4.3.2 Reveal in Finder (Mac OS only)
This brings the Finder process to the front and selects the currently selected file/directory.
4.3.3 File Filter
This positions the cursor in the file table's filter field.
4.3.4 Select Committable Files
This selects all committable files in the file table. Because SmartSVN allows automatically adding unversioned or removing missing files for a commit, such files are also selected.
4.3.5 Select Directory
This selects the deepest common directory for all selected files in the file table.
4.3.6 Select in Project
This selects the currently selected files/directories from the Transactions view or the Output area in the file table/directory tree.
4.3.7 Copy Name
This copies the name of the selected file/directory to the system clipboard. If multiple files are selected, all names will be copied, each on a new line.
4.3.8 Copy Path
This copies the path of the selected file/directory to the system clipboard. If multiple files are selected, all paths will be copied, each on a new line.
4.3.9 Copy Relative Path
This copies the path of the selected file/directory relative to the project root directory to the system clipboard. If multiple files are selected, all paths will be copied, each on a new line.
4.3.10 Copy URL
This copies the repository URL of the selected file/directory to the system clipboard. If multiple files are selected, all URLs will be copied, each on a new line.
4.3.11 Copy Revision Number
This copies the revision number associated with the item in the currently active view (e.g. Directory view, Files view, Transactions view) to the system clipboard. If multiple items are selected, all their revision numbers will be copied, each on a new line. For example, if a file in the Files view is selected, this command will copy the revision number of the file to the clipboard.
4.3.12 Copy Message
Copies the message of the currently selected revision in the Transactions view. If multiple revisions are selected, all messages will be copied, each on a new line.
4.3.13 Clear Output
This clears the output displayed in the Output view.
4.3.14 Customize
This customizes accelerators, context menus and the toolbar:
-
Toolbar (not always available) - 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.
Select or deselect Show text below icon to show or hide the toolbar button text.
-
Accelerators - To set or change an accelerator, select the corresponding menu item, go to the Accelerator field, 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.
You can double click a menu item to directly jump to the Acceleratorfield.You can assign/change multiple accelerators at the same time, if they eachbelong to a different Window.
-
Context Menus (not always available) - First select the Context Menu to change. Then you will find 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 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.
If you haven't changed the context menus (significantly) it's recommendedto use Reset to Defaults after having upgraded SmartSVN to a new majorversion as new menu entries might have been added.
4.4 View menu
4.4.1 Table Columns
Table Columns lets you specify which file attributes are displayed in the file table, see below for details:
File attributes with SVN counterparts
Name | (same) | File name |
Revision | (same) | Current revision of the file |
Local State | Schedule | Textual representation of the local state of the file |
Lock | Lock Owner | Lock state of the file |
Last Rev. | Last Changed Rev. | Revision in which this file has been committed |
Last Changed | Last Changed Date | Time of the last commit of the file |
Text Updated | Text Last Updated | Time of the last (local) update of the file's text; this attribute is set when the content of a file has been changed by an SVN command. |
Props Updated | Properties Last Updated | Time of the last (local) update of the file's properties; this attribute is set when the properties of a file have been changed by an SVN command. |
Last Author | Last Changed Author | Last author, i.e. who performed the last commit on the file |
Type | svn:mime-type | The file's type |
EOL | svn:eol-style | End-Of-Line Type of the file |
Keyw. | svn:keywords | Keyword substitution options of the file |
Needs Lock | svn:needs-lock | Whether the file should be locked before working |
Executable | svn:executable | Whether the file has the Executable-Property set |
Merge Info | svn:mergeinfo | Whether the file has the Merge Info-Property set: None for no Merge Info set, Empty for an empty Merge Info or Present for non-empty Merge Info. |
Copy From | Copy From URL/Rev | Location and URL from which this file has been copied (locally). This value is only present if the file is in Copied state |
File attributes without SVN counterparts
Remote State | Remote state of the file |
Ext. | The file's extension |
Relative Directory | Parent directory of the file relative to the selected directory |
File Time | The local time of the file |
Attrs. | Local file attributes: R for read-only and H for hidden |
Size | The local size of the file |
Branch | The tag/branch to which the file is currently. |
Change Set | The Change Set to which the file belongs. |
Certain table columns require access to additional file system files when scanning the file system and therefore slow down scanning. The note within the View|Table Columns dialog tells you which columns these are.
4.4.2 Refresh
When a project is opened, the contents of the directory tree and the file table are initialized by reading the contents of the root directory into memory. Whether or not the complete project should also be read into memory at project startup can be configured in the project settings.
The scanning and refreshing of the project's directories and files is generally 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 symbol and text.
The scanning is performed breadth-first, 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: As soon as possible select the (already scanned) directory in the Directories tree you would like to have scanned recursively. SmartSVN will then reorganize its breadth-first strategy accordingly. The same holds true for file selections: SmartSVN will give priority in scanning their common parent directory (and the path up to the root).
The initial scanning/refresh is in general much slower than subsequentrefreshes due to the system disk cache.On Windows, you can enable the Status Cacheto get a first 'preview' of your working copy quickly.This preview also allows most of the commands to be performed.This allows certain SVN operations to be started before the file system hasbeen scanned.
4.4.3 Files From Subdirectories
This enables the recursive view showing not only files from the currently selected directory but also those from subdirectories.
4.4.4 Unchanged Files
With Unchanged Files unchanged files are displayed. It is often convenient to hide them, as they are of no interest for most of the SVN commands.
4.4.5 Unversioned Files
With Unversioned Files unversioned files (also within unversioned directories) are displayed.
The Unversioned Files option does in no way affect the unversioned files themselves or their SVN states.Certain operations, which can work on unversioned files, will include them anyway. Parent directories of unversioned files will continue to display the Direct/Indirect Local Changes state. To actually ignore such files on the SVN-level you can use the Ignore command.
4.4.6 Ignored files
With Ignored Files ignored files within versioned directories will be displayed. Files from ignored directories are never displayed.
4.4.7 Files assigned to changeset
With Files Assigned to Change Set selected, files which have already been assigned to a Change Set will be displayed. Otherwise, these files will be hidden in order to give a better overview of the files not assigned to any Change Sets. This option has no effect if the selected directory is a Change Set itself or part of a Change Set.
4.4.8 Remote Changed Files
With Remote Changed Files selected, files will be displayed which are remotely changed. Typically, this option has no effect if Unchanged Files is selected, because these files are shown anyway. An exception here are files which only exist remotely, i.e. files which are in Remote state.
4.5 Modify menu
4.5.1 Update
Use Modify|Update to get the latest changes or a specific revision from the repository for the selected files/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 files/directories of repository subtrees that haven't been checked out yet. Select Set depth to working copy to get new subtrees as well (according to the selected Depth option).
When selecting Allow unversioned obstructions, SmartSVN will continue to update new files from the repository for which locally unversioned files already exist. Otherwise the update will be cancelled in such situations, giving you the chance to cleanup these locally unversioned files beforehand.
Use Include Externals to descend into externals.
4.5.2 Update more
Use Modify|Update More to get locally missing directories and files from the repository for a foregoing non-recursive Update or Check Out.
Update More checks for the currently selected directory whether there are subdirectories or files that haven't been checked out yet. They are presented in a list and you can select one or more of them to update. Recurse into subdirectories specifies 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.
4.5.3 Exclude from working copy
Use Modify|Exclude from Working Copy on one or more directories to locally exclude them from the working copy. The directories won't be removed from the repository, but will simply be ignored during subsequent Updates. To get excluded directories back, use the inverse operation Update More.
4.5.4 Switch
Use Modify|Switch to switch the selected directory or file 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 that branch or tag. 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 specific Revision. Select Recurse into subdirectories to perform the switch command not only for the currently selected directory, but also for all subdirectories
4.5.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 project's 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.
4.5.6 Merge
Use Modify|Merge to merge changes from another source branch to the selected file/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 Location to merge from an arbitrary location, 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 property of your merge target.
Use All Revisions to merge all the revisions which have not yet been merged from the selected location. SmartSVN will detect them based on the present merge tracking information.
You will typically use this option when working with a feature branchto keep it in sync with the trunk.
All Revisions does not work with pre-1.5 servers (e.g. 1.4servers).
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 specified ranges have already been merged and avoid repeating the merge. Single revisions are just specified by their revision number while ranges starting at start (inclusive) and ending at end (inclusive) are specified by start-end. Multiple revisions (ranges) can be specified with a separating colon (:). Certain revisions may be excluded by prefixing them with an exclamation mark (!).
Instead of entering the revisions manually, you can choose them from the revision browser. The revision browser will indicate with a green arrow which revisions have not been merged ('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 also include revisions which have already been merged.
You will typically use this option when working with a release branchto merge only bugfix 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, meaning that merging does not simply calculate (and merge) the difference between two files which have the same path, but also checks if both files are actually related. For the typical merging use cases, this behavior leads to the expected results and it is also required for the merge tracking to work. You can switch this behavior off 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.
Deselect Recurse into subdirectories to merge only changes to the selected directory/file itself but not it's contained files, etc. In general it's recommended to keep Recurse into subdirectories selected.
With Record only no files will be touched during the merge, and only the Mergeinfo, will be adjusted accordingly, so that 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 it's required to delete locally modified files, because they have been removed in the merge source. You can switch off this safety check by selecting Force deletion of locally modified files, if necessary.
Close the dialog with Merge to immediately perform the merge to the selected directory/file of the current working copy. Alternatively you may choose to Preview the changes that would result from the merge.
You can choose to keep the auxiliary merge files even for non-conflictingfiles in the Project Settings.
4.5.7 Merge from two sources
Use Modify|Merge from 2 Sources to merge changes between two different merge sources (URLs) to the selected file/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 drop-down list.
Most merging use cases are covered by Merge which - if possible - should be used instead.
4.5.8 Apply patch
Use Modify|Apply Patch to apply a patch file to your working copy. Currently supported patch file formats are unidiff patches.
For the Select Patch File dialog, select the patch file which you want to apply. Typically, patch files have .patch or .diff extensions. Based on the file paths contained in the patch file, SmartSVN will try to detect the correct base directory to which the patch should be applied. It will fail if it can't find any files to patch in the working copy.
The resulting window is similar to the Merge Preview window. The Files area allows you to deselect certain files from the patch. You can apply the patch via Patch|Apply Patch.
Unpatchable files
In case the patch could not be applied to certain files, an Unpatchable files area will be displayed at the top of the window. The table contains the Path of the file and a description of the Problem. The tooltip text of the Problem column contains more details in case the expected and the actual lines did not match when trying to apply the patch to the file.
Commit
- see CommitAdd
- see AddRemove
- see RemoveIgnore
Use Modify|Ignore to mark unversioned files or directories as to be ignored 'locally'. This is useful for files or directories which should not be put under SVN control. These are usually temporary, intermediate or automatically generated files, like C's .obj or Java's .class files, or directories containing such files.
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 file 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 file or directory within another unversioned directory, SmartSVN will ask you to add this parent directory. In addition to local ignore patterns, you can configure global ignored patterns in the project settings.
You can select Ignore Explicitly to add each selected file/directory explicitly to the ignore list. If SmartSVN detects a common pattern for the selected files/directory, it will also allow you to Ignore As Pattern.
This command is a shortcut for editing the svn:ignore property directly by Properties|Ignore Patterns.
Ignore Patterns
Use Properties|Ignore Patterns to add, change or delete local ignore patterns for a directory. Local ignore patterns define file 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 specifying global ignore patterns within the project settings.
4.5.9 Delete physically
- see Delete physically4.5.10 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 addition to SVN control.
4.5.11 Rename
Use Modify|Rename to rename a file or directory which is already under SVN control. The file with the old name will be scheduled for removal, the file with the new name for addition. This command will preserve the file's history.
4.5.12 Move
- see Move4.5.13 Detect moves
Use Modify|Detect Moves to convert already performed 'manual' moves (including renames) of files 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 file and a new unversioned file. Both files could then be changed and committed. This will result in the repository content being up to date, but will not preserve the relationship between both files (which is actually one moved file). This especially affects the log of the added file: It will start at the committed revision and won't include the revisions of the removed file. To preserve the relation (and hence history/log), a 'post-move' on both files has to be performed. Detect Moves can detect such already performed 'manual' moves based on the file content and displays the corresponding suggestions of which files could be 'post-moved'.
Invoke Detect Moves on a set of missing and unversioned files for which 'post-move' should be detected. Depending on the number of selected files, the operation might take a while. The results will be displayed in terms of a list of possible 'post-moved' files pairs.
Suggestion displays the detected move in a descriptive manner. If you agree that the corresponding file 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 file contents and denotes the calculated likelihood for the file pair to be an actual move.
For more details, Target displays the name of the unversioned (i.e. new) file. Source displays the name of the missing (i.e. old) file. If the name of the file 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 file and Source Path displays the path of the old file. Again, Source Path will be omitted if it is equal to Target Path.
There can also be more than one possible Source for a specific Target. In this case SmartSVN always suggests the best matching Source, i.e. the file 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 file with the File Compare. 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'.
4.5.14 Copy
Use Modify|Copy to create a copy of a file or directory which is already under SVN control. This command will preserve the history of the copied item.
Select the Target Directory under which the copy of the file/directory will be created, and specify the New Name.
There is also a special mode of this command that can be used to tell SmartSVN 'after the fact' that a file was copied. For this to work, exactly two files 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 file (if necessary) and connect the history of the added file to that of the other file.
Copy From Repository
With Modify|Copy From Repository you can copy a file or directory from the repository to your local working copy. This command can be used for recovering deleted files and directories from earlier revisions.
Repository is the repository of your local working copy, it can't be changed as copies can only be performed within the same repository. For Copy enter the file/directory to be copied, along with its Source Revision. Specify the local directory Into Local into which the file/directory should be copied. With Name will be the name (i.e., last component of the path) of the restored file/directory.
Copy To Repository
With Modify|Copy To Repository you can copy the selected local file/directory to the repository.
Repository is the repository of your local working copy, it can't be changed as copies can only be performed within the same repository. The local file/directory Copy Local will be copied to the project's Repository. The target directory is Into Directory. With Name will be the name (i.e. last component of the path) of the resulting file/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 external revisions. This option is only relevant for externals which have their revisions set to HEAD. By default, Leave as is will not modify any external 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 specified location, or some subdirectory of this location.
Only when fixing 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 external, which are in general not equal to it at the time of creating the copy.
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 the case of copy To, the source will be copied into the Directory with its name set to With Name (last component of the path). For copy Contents Into, the contents (files 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.
4.5.15 Revert
- see Revert4.5.16 Mark resolved
Use Modify|Mark Resolved to mark conflicting files or conflicting directories as resolved. You have to resolve conflicts to be able to commit the files/directories.
In case of directories you have the option to Resolve files and subdirectories recursively. If selected, all conflicting files and directories within the selected directory will be resolved. Otherwise only the property conflicts of the directory itself will be resolved.
Regarding the File Content, use Leave as is to apply no further modifications to resolved files. Use Take working copy to replace the contents of resolved files with their contents as they were before the update/merge. Use Take new to replace the contents of resolved files with the contents of their corresponding pristine copies as they are now after the update/merge. Use Take old to replace the contents of resolved files with the contents of their corresponding pristine copies as they were before the update/merge.
Tree conflicts
Certain kinds of conflicts are not directly related to the content or properties of a file (or directory) but to conflicting actions on a file/directory. Such conflicts are called tree-conflicts.
Tree conflicts are similar to normal conflicts as conflicting files/directories can't be committed before they have been resolved. The Local State column for files shows details for a tree conflict, if present. File and directory tooltips display this information as well.
You have modified file 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 modifications to foo.txt this file will not be deleted,but re-scheduled as copied from itself (but the revision before the update).Furthermore, bar.txt will receive your local modifications of foo.txt.This represents a tree conflict.There are different kinds of tree-conflicts, for a detailed analysis referto: http://subversion.apache.org/docs/release-notes/1.6.html#tree-conflicts
4.5.17 Mark replaced
Use Modify|Mark Replaced to mark modified files or a directory as replaced.
Marking modified files or a directory as replaced does not affect the contents of the files or directories, but only the meaning of the commit and the history of the directory/files. This can be useful to show that the content of a directory/files is not related to its previous revision. The Log of such a directory/files will not go beyond the replacement revision, meaning that the directory/files has been created at that revision.
For example, we have a Java interface Person.java and one implementingclass PersonImpl.java.As the result of a refactoring, we are getting rid of the interface Person.javaand renaming the class PersonImpl.java to Person.java.This results in a removed file PersonImpl.java and a modifiedfile Person.java.
When simply committing these changes, this would mean that the class PersonImpl.javahas been removed and the interface Person.java has been changed toa class Person.java, with no history except that of the interface.
Taking a closer look at this situation, it would be better to do a commitmeaning that the interface Person.java has been removed and the classPersonImpl.java has been renamed to Person.java.At least that was the intention of our refactoring and it would also meanto preserve the history of PersonImpl.java for Person.java.
To achieve this, we will use Mark Replaced on Person.javaand then we will use Move on Person.java andPersonImpl.java, performing a 'post-move' between both files, yieldinga removed PersonImpl.java and a replaced Person.java, whichhas its history (Copy From) set to PersonImpl.java.
4.5.18 Clean up
Use Modify|Clean Up to clean up unfinished SVN operations for the selected directory (and all subdirectories). Cleaning up a working copy is necessary when the working copy becomes 'internally' locked. 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.
A clean up may fail for the same reasons for which the preceding SVN operationhas failed.This typically happens if certain files or directories can't be read or written.In such cases, please check whether other running processes might lock thefile and whether file permissions have been set adequately.
4.5.19 Fix
- see Fix4.6 Change Set menu
A Change Set is a group of committable files and directories, with a message assigned. Subversion itself supports Changelists which currently can contain only files. SmartSVN automatically synchronizes the files of a Change Set with the corresponding SVN changelist. Change Sets are also known as 'prepared commit' in other version control systems.
Change Sets are displayed in the Directory Tree below the normal project directory structure.
Change Set root node | |
Change Set root node, which contains the modified project root directory | |
A virtual Change Set directory, which does not represent an actual project directory, but is necessary to display child directories and files. | |
(various) | A Change Set directory which represents (or is equal to) the corresponding project directory. |
4.6.1 Move to change set
Use Change Set|Move to Change Set to change the assigned Change Set of selected, committable files/directories.
To move the selected files/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 either 'Allow only committable entries' (SmartSVN versions up to and including 8.6 RC1) or 'Automatically drop uncommittable entries' (SmartSVN versions 8.6 RC2 and newer) to automatically remove unchanged and other non-committable entries from Change Sets.
When having Remove this Change Set once it gets empty and Allow only committable entries (SmartSVN versions up to and including 8.6 RC1) or 'Automatically drop uncommittable entries' (SmartSVN versions 8.6 RC2 and newer) selected, the Change Set will be automatically removedafter committing it because
- the committed files will turn their state into unchanged after thecommit and hence will be removed from the Change Set and
- the Change Set will be empty and hence will be removed itself.
To move the selected files/directory to another, already existing Change Set, select Existing Change Set and choose the Target Change Set.
To remove the selected files/directory from their currently assigned Change Set, select Remove from Change Set.
4.6.2 Move up
Moves the current changeset up
4.6.3 Move down
Moves the current changeset down
4.6.4 Delete
Deletes the current changeset (but not the files).
4.6.5 Edit properties
Allows you to rename the changeset message, or change any of the configurable changeset options.
4.7 Tag+Branch menu
- Add Tag, see Add a Tag.
- Tag Multiple Project Roots, see Tag Multiple Project Roots.
- Add Branch, see Add Branch.
- Tag Browser, see Tag Browser.
- Configure Layout, see Configure Layout.
4.7.1 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.
4.7.2 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 specified with the Configure Layout 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 optionally a Removed At revision at which it had been removed.
The tag browser is built upon information from the Log Cache. 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 specifies whether the table shall also display tags/branches which have been indirectly derived from the currently selected branch in the tree. Select Removed Tags and 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 drop-down button allows sorting of the branches either by Name or by Revision.
You can also invoke the Tag Browser from the tag or branch name inputfields by clicking the ellipsis button to the right (...) or using
4.7.3 Configure Layout
Use Tag+Branch|Configure Layout to configure the Tag-Branch-Layout for the currently selected directory. This command is only available on the working copy root directory and externals roots. For details refer to Tag-Branch-Layout:
Tag-Branch-Layout
The Tag-Branch-Layout defines the project's root URL (within the repository) and where the trunk, tags and branches of the project are stored. For various commands this will affect the presentation, and interaction, of the URLs. When invoking a tag/branch-aware command on a directory for which no layout can be found, SmartSVN will prompt you to configure a corresponding layout in the Configure 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 defined as a project root as the definition of what a project is, is completely up to you.
The first decision for a Project Root is whether to enable or disable Tag-Branch-Layouts for it. Many SVN projects are organized using tags and branches. In this case choose Use the following layout to configure 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 off.
Trunk specifies the root directory of the project's trunk. Branches and Tags specify the directory patterns of the branch and tag root directories, respectively. All paths are relative to the Project Root. Enter the values trunk, branches/* and tags/* here if you want to use the recommended SVN standard layout.
The Subversion project itself is located at https://svn.apache.org/repos/asf/subversion.Hence for the corresponding SmartSVN project, Project Root must beset to https://svn.apache.org/repos/asf/subversion.Subversion's Trunk URL is https://svn.apache.org/repos/asf/subversion/trunk/, i.e.trunk is the relative path and must be set for Trunk.Branches are located in https://svn.apache.org/repos/asf/subversion/branches/, e.g.https://svn.apache.org/repos/asf/subversion/branches/1.8.x/ is the root of the'1.8.x' branch.I.e.Branches must be set to branches/*.This is similar for Tags.
It's also possible to use multiple branch or tag patterns. In this case, when entering, for example, a branch, you have to specify not only the branch name, but the relative path to the common root of all branches.
SmartSVN uses the proposed standard layout for new projects. If you want to configure another default layout, open one project which contains the desired layout, select Tag+Branch|Configure Layout and use Make this configuration the default here.
4.8 Query menu
4.8.1 Open
Opens the selected files/directory. If the directory tree has the focus, this action will only work if a Directory Command has been configured in the preferences. If the file table has the focus, the file(s) will be opened in an editor. The editor to be used to open a file can be configured in the External Tools section of the Preferences. For files, you can specify a limit on the number of files beyond which you will be asked before the files are opened at once.
4.8.2 Open in repository browser
Open the selected directory/file in the Repository Browser.
Repository Browser
The Repository Browser offers 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 by Query|Open in Repository Browser or by Window|New Repository Browser. If a tray icon is present the Repository Browser frame can be invoked by New Repository Browser. The Repository Browser can also be invoked from Project Window commands via Repository path input fields and commands like Check Out or Import into Repository.
The Repository Browser displays the repository content with a Directory tree and a File table, similar to the Project Window.
The repository file system is only scanned on demand. This happens when currently unscanned directories are expanded. The Tag-Branch-Layouts will be used to display directory icons. Directory States shows the possible directory states.
4.8.3 Show changes
Use Query|Show Changes to compare the selected files or directory against their pristine copies. Show Changes will correspondingly open one or more File Compare frames or the Properties Compare for a directory.
4.8.4 Compare with head
Use Query|Compare with HEAD to compare a single, local file with the HEAD revision in the repository.
4.8.5 Compare with previous
Use Query|Compare with Previous to compare a single, local file with the last but one revision in the repository (i.e. the revision before HEAD).
4.8.6 Compare with revision
Use Query|Compare with Revision to compare a single, local file with another revision of the same file or even another file. Select either to Compare the Working copy or the Pristine copy. Select to compare With the Trunk or a specific Branch or Tag or an arbitrary Other Location. Select whether to retrieve the repository file At the repository HEAD or at a another Revision. The result will be a File Compare frame.
4.8.7 Compare 2 Files
Use Query|Compare 2 Files to compare two local files with each other. No connection to the repository is required.
When having one or more missing files selected, their pristine copies will be used for the comparison instead.
4.8.8 Compare repository files or directories
Use Query|Compare Repository Files or Directories to compare two different repository directories for changes (either added, removed or changed files and directories). This command gives you similar information like Create Patch between URLs, but in an easier to read form. The result will be a Compare Repository Files or Directories 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 files, but also descend into subdirectories.
4.8.9 Log
- see Log4.8.10 Revision graph
- see Revision graph4.8.11 Annotate
- see Annotate4.8.12 Create patch
Use Query|Create Patch to create a 'Unidiff' patch for the selected files/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 Apply Patch on how to apply patches with SmartSVN.
The patch will be written to the given local Output File. In case of creating a patch for a directory, you can select Recurse into subdirectories to create the patch recursively for all files within the selected directory.
Select Ignore changes in EOL-Style to ommit output for line changes in which only the line ending differs. This can be useful if, after having the line endings of a local file changed temporarily, only 'relevant' changes should be included in the patch.
With For Whitespaces you can configure to ommit output for certain changes which are only affecting whitespaces. Use No special handing include any changes regarding whitespaces. Use Ignore changes in the amount to ignore 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 only output lines where anything except whitespaces has changed.
4.8.13 Create Patch between URLs
Use Query|Create Patch between URLs to create a 'Unidiff' patch between two arbitrary URLs. See Create Patch for more details on patches. Compare Repository Files or Directories is a version of this command that presents the results in a more human-friendly way.
The patch is generated from one Repository and contains the difference between From and To. The patch will be written to the local Output File.
By default, this command takes the ancestry into account, meaning it does not simply calculate (and print out) the difference between two files which have the same path, but also checks if both files are actually related. You can switch this behavior off by selecting Ignore ancestry on the Advanced page. For details regarding the other Advanced options, refer to Create Patch.
4.8.14 Export Backup
Use Query|Export Backup to export a backup of the selected files/directory.
Export displays what will be exported. Depending on the selection of files/directory this will either be the number of files being exported or All files and directories. Relative To displays the common root of all files to be exported and the exported file's paths will be relative to this directory.
You can either export Into zip-file or Into directory. In both cases, specify the target zip file or directory, and optionally choose to Wipe directory before copying.
Select Include ignored files and/or Include ignored directories if you want to include the respective ignored items (and their contents) as well.
4.8.15 Remove empty directories
When selecting this option SmartSVN will scan for any empty directories and will schedule them for removal.
4.8.16 Conflict solver
- see Resolving Conflicts4.8.17 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, for each file 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 in the Preferences to have the Remote State automatically refreshed.
If problems during the Remote State refresh are encountered, the status bar will display an Error in the Refresh area. The tooltip for this area will show more details regarding the encountered problem.
4.8.18 Clear Remote State
Use Query|Clear Remote State to clear and hide the remote state. This will remove all directories and files which have the local state 'Remote' (see Common Primary File States and Primary Directory States) and hide the Remote State file table column.
4.9 Properties menu
4.9.1 Edit properties
Use Properties|Edit Properties to display and edit properties of the selected file/directory.
Internal SVN properties are displayed with grey font.It's not recommended to modify SVN properties directly through this dialog.It's better to use the other property-specific commands in the Propertiesmenu.
You can Add, Edit and Remove individual properties. Use Revert on one or more properties to reset their Current Value to their Base Value.
4.9.2 Set or delete property
Use Properties|Set or Delete property to change a property for multiple files/directories at once.
Enter the name of the Property; the drop-down button offers 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).
To get rid of all explicit mergeinfo from your project except fromthe project root, select svn:mergeinfo for Property, chooseDelete Property and Recurse into subdirectories and deselectInclude this directory.
MIME-Type
Use Properties|MIME-Type to change the SVN MIME-type of the selected files. 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 can't 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 the case of text types, the line endings etc. can be replaced. By default, when adding files (see Add), 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 file with this command.
Within the project settings you can define file name patterns which should always be treated as binary.
4.9.3 EOL-Style
Use Properties|EOL-Style to change the EOL-Style (line separator) of the selected files. The EOL-style is used when updating or checking out a text file and results in a corresponding conversion of its line endings:
- Platform-dependent converts to the platform's 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, the default EOL-style can be specified. This will be applied to every added file. By default, this will be Platform-dependent.
When changing the EOL-style of a file, SmartSVN checks whether the file has consistent line endings. If this is not the case, it will reject the EOL-style change (other behaviors can be configured in the project settings). To skip this check, use Force.
4.9.4 Keyword Substitution
Use Properties|Keyword Substitution to select the keywords for the selected files, which should be substituted (expanded) locally. Keyword substitution only works for text files.
For each keyword you have the option to Set or Unset it. Select Don't change to keep the current substitution for the keyword.
4.9.5 Executable-Property
Use Properties|Executable-Property to change the 'Executable-Property' of the selected files. The 'Executable-Property' is a versioned property, but is only used on Unix(-like) platforms, where it defines whether the 'Executable Flag' should be set to a file or not.
Choose Executable if the 'Executable-Property' should be assigned to the file or Non-Executable to remove the property from the selected files.
4.9.6 Externals
Use Properties|Externals to define or change externals. An external (officially also referred to as externals definition) is a mapping of a Local Path to an URL (and possibly a particular Revision) of a versioned resource.
In general, externals are specified by complete URLs, but there are also shorter representations which can be more flexible. The URL input field allows switching 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.
To include the external http://server/svn/foo as directory bar/bazzat revision 4711 into your project, select directory bar and invokeProperties|Externals.Click Add, enter bazz into the Local Path input field,http://server/svn/foo into the URL input field, 4711to the Revision input field and confirm by hitting OK: Aftercommitting your property change, an update on bar will create thesubdirectory bar/bazz with the content from http://server/svn/fooat revision 4711.
It is safer to always set a Revision to externals.In this way you can always be sure about which version you are actually workingwith.When you decide to use a more recent revision of the external, you can evaluateit beforehand and, if you are satisfied, increase the Revision numberof the external definition.
Externals may refer to directories as well as to files.In case of files, the referred URL must be part of the same repository towhich its local parent directory belongs.(The local parent the directory is the directory to which the svn:externalsproperty belongs.)
4.9.7 Ignore Patterns
Use Properties|Ignore Patterns to add, change or delete local ignore patterns for a directory. Local ignore patterns define file 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 specifying global ignore patterns within the project settings.
To add an ignore pattern, you can also use the Modify|Ignore command.
4.9.8 Bugtraq-Properties
Use Properties|Bugtraq-Properties to configure the Bugtraq-Properties for the current working copy. Bugtraq-Properties are a technique for integrating Subversion with issue tracking systems.
A detailed specification for the Bugtraq-Properties can be found at: http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/doc/issuetrackers.txt, username is guest with empty password.
Mapping from core bugtraq:properties to SmartSVN UI elements
bugtraq:url | URL |
bugtraq:warnifnoissue | Remind me to enter a Bug-ID |
bugtraq:label | Message Label |
bugtraq:message | Message Pattern |
bugtraq:number | is true exactly if Bug-ID is set to Numeric |
bugtraq:append | is true exactly if Append message to set to Top |
bugtraq:logregex | For the version with one regular expression this correspondsto Bug-ID Expression.For the version with two regular expressions, Message-Part Expr. correspondsto the first line and Bug-ID expression corresponds to the second line. |
Assuming your commit messages looks like this: Ticket: 5 Some messageor ticket #5: Some message and you want the 5 to be renderedas 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 to show up as a link, usethe same Bug-ID expression and also set Message-Part Expr.to this value.
Let's say your commit messages look like this: CF-11: Some message, orET-12: Some message.Then, if you want the 11 and 12 to show up as links to yourissue 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 asa link, set Bug-ID expression to (CF-\d+|ET-\d+) and leaveMessage-Part Expr. empty.
4.9.9 Merge Info
Use Properties|Merge Info to change the svn:mergeinfo property for the selected files/directory.
4.10 Locks menu
4.10.1 Refresh
With Locks|Refresh SmartSVN you can scan the selected files, or all files within the selected repository directory, for locks. The result is displayed in the file table column Lock.
Note:
The Lock column in the table is not always visible. It is made visible by a manually triggered refresh, or after Locks|Refresh.
Displaying the Lock column slows down the refresh because all lock states are scanned. We therefore recommend that you only display the Lock column when you use locks.
You can combine scanning the repository for locks with refreshing the Remote State in the Preferences. You can also schedule a repeated refresh of the repository lock information in the Project Settings.
4.10.2 Lock
With Locks|Lock you can lock the selected files in the repository. You can also enter a Comment to explain why you are locking these files.
The option Steal locks if necessary will lock the requested files regardless of their current lock state (in the repository). With this option it may happen that you 'steal' the lock from another user, which can lead to confusion when the other user continues working on the locked file. Hence you should only use this option if necessary (e.g. if someone is on holiday and has forgotten to unlock important files).
Keep Update to HEAD before selected to perform an update to HEAD. Only the latest revision of a file can be locked.
4.10.3 Unlock
With Locks|Unlock you can unlock the selected files, or all files within the selected directory (recursively) in the repository.
The option Break locks will unlock the requested files even if they are not locked locally. With this option it may happen that you 'break' the lock of another user, which can lead to confusion if that other user is still working on the locked file.
4.10.4 Show Info
Locks|Show Info shows information on the lock state (in repository) of the selected file.
State shows the current lock state (see Lock States). 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 file needs locking, i.e. the 'Needs Lock ' property has been set. Comment is the lock comment, as entered by the user at the time of locking.
4.10.5 Change 'Needs Lock'
With Locks|Change 'Needs Lock' files can be marked/unmarked depending on whether they require locking. This is a useful indicator to users that they should lock the file before working with it. One aspect of this indication is that SmartSVN will set files which require locking (due to this property) to read-only when checking out or updating.
4.11 Changes menu
4.11.1 Reload
Use to refresh the file contents from the file system and recalculate the differences.
4.11.2 Previous change
Use to navigate to the previous change within the currently selected file. If there is no previous change, SmartSVN will select the last change of the previous file (as displayed in the file table).
4.11.3 Next change
Use to navigate to the next change within the currently selected file. If there is no next change, SmartSVN will select the first change of the next file (as displayed in the file table).
4.11.4 Ignore Whitespace for Line Comparison
If Ignore Whitespace for Line Comparison is selected, two lines are treated as equal, if they only differ in the number, but not in the position of whitespaces.
4.11.5 Ignore Case Change for Line Comparison
If Ignore Case Change for Line Comparison is selected, uppercase and lowercase characters are treated as equal.
4.11.6 Settings
The Tab Size specifies 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 Remember as default to have the selected options apply to all File Compare frames.
For basic settings regarding text components, refer to Built-in Text Editors.
4.12 Transactions menu
4.12.1 Refresh
Use to refresh the log information for the Watched URLs.
4.12.2 Mark as read
Use View|Mark as Unread or View|Mark All as Read to mark revisions as unread or 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 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.
4.12.3 Mark All as Read
Use View|Mark as Unread or View|Mark All as Read to mark revisions as unread or 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 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.
4.12.4 Show branches and tags
Select to display not only the working copy revisions but also revisions of the trunk, branches and tags.
4.12.5 Show additional watched URLs
Select to display not only the working copy revisions but also revisions which have explicitly been configured to be watched by Configure Watched URLs.
4.12.6 Grouping of revisions
Use the View to group the revisions by different categories:
- Ungrouped
- Days
- Weeks
- Date
- Authors
- Location (repository)
4.12.7 Merge
Use to merge the selected revision to your local working copy. If you want to configure advanced options for the merge, use the default Merge command.
4.12.8 Rollback
Use to roll back the selected revision/file/directory locally, i.e. in your local working copy. You may then review the rolled back changes and, if acceptable, commit them. This command will only be applicable for logs which are linked to a local working copy.
4.12.9 Change commit message
Use to change the commit message of the currently selected revision. Enter the new Commit Message and wait, if necessary, until SmartSVN has finished rebuilding the corresponding Log Cache.
4.12.10 Configure Watched URLs
Use Edit|Configure Watched URLs to configure the observed URLs (i.e. repositories). Every entry must have a Name which will be displayed in the 'Root' column of the revision line prefix to distinguish revisions from different repositories. All revisions below the Root URL will be observed.
With the Display revisions for the last and But at most options you can put limits on how far into the past the Transactions view will display revisions.
4.12.11 Settings
Select Transactions|Settings to configure 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.
4.13 Window menu
4.13.1 New Project Window
Opens a new Project Window for working on another project.
4.13.2 New Repository Browser
Opens a new Repository Browser.
4.13.3 Show Transactions
Shows the standalone Transactions Frame.
The Transactions frame can be invoked from within the Project Window or from within the Repository Browser by Window|Show Transactions. If a tray icon 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 files/directories have been affected by the corresponding revision.
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 file or directory type. Hence, all entries modified in a revision will be displayed using file icons (even if there are directories).
A revision line primarily shows the commit message of the corresponding revision and has a prefix 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 Watched URLs 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 Tag-Branch-Layout.
- Revision Number Displays the revision number.
- Time Displays date and time of the revision. The used format can be changed in the Preferences.
- Trunk/Branch/Tag displays the corresponding trunk, branch or tag to which the revision belongs, refer to Tag-Branch-Layout 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 revision's author.
- File count Displays the number of modified files/directories the revision contains.
- The changed files/directories for a revision are displayed relative to the corresponding Trunk/Branch/Tag of the revision, or relative to the Root's URL in case no Tag-Branch-Layout is used. If a Tag-Branch-Layout is used, but a file path does not fit into the Tag-Branch-Layout, it will be prefixed by a '/' to denote that it is given relative to the Root.
4.13.4 Full Screen
Switches the program to full-screen mode. To get back to the normal mode, click on this menu entry again.
4.13.5 Minimize
Minimizes the program window. On most platforms, to bring it back you have to click on SmartSVN in the task bar.
4.13.6 Maximize/Restore
Maximizes or de-maximizes the currently active view. This action can also be performed by double-clicking on the tab title area of the respective view.
4.13.7 Hide Tool window
Hides the currently active view. This is the same as clicking on the Close button of the view. To bring the hidden view back, select the corresponding entry in this menu. For example, after hiding the Directories view, you can bring it back with Window|Directories.
4.13.7 Directories
Puts the focus in the Directory tree.
Directory Tree and File Table
The directory tree and the file table show the local directories/files below the project's root directory. .svn directories, ignored directories and files within other ignored directories are not displayed.
Directory States/Directory TreeThe directory tree shows the project's directories and their SVN states, which are denoted by different icons. The primary directory states are listed in Primary Directory States. Every primary state may be combined with additional states listed in Additional Directory States. In case of a versioned directory, the corresponding revision number is displayed after the name of the directory. The revision will be omitted if it's equal to its parent directory revision. If the directory hasn't been checked out with depth Fully recursive, 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 file 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. A small popup will be displayed showing the characters you have already entered. Wildcard symbols '*' and '%' can be used with the usual meaning.
File States/File TableThe file table shows the project's files with their SVN states and various additional information. The primary file states are listed in Common Primary File States and Rare Primary File States. Every primary state may be combined with additional states listed in Additional File States. The rest of this section explains configuration options for the file table. They are only related to the current project and are also stored with the current project.
Name FiltersThe toolbar of the file table contains the Filter input field, which can be used to restrict the displayed files to a certain file 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 files which don't have the .txt extension.
To clear the Filter field, click on the button right side of the field. In the drop-down menu on the left side of the Filter field, you can 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 file table.
State FiltersWith the menu items in the View menu, you can also set filters to display only files which meet certain criteria. Refer to the View menu for details. The filter behavior can be customized in the Preferences with Hide ignored and repository-only directories according to View-menu filters on the User Interface page.
Double clickBy default, if you double-click on a file in the file table, the file will be 'opened' in one of several ways, depending on its file state:
- For an unchanged file which is remotely changed, the Compare with HEAD command is invoked.
- An unchanged, unversioned or added file is opened with the file editor, see the Query|Open command for further details.
- A conflicting file is opened with the Conflict Solver.
- All other files are opened by comparing them.
If, for example, you want to always open (Edit) the file independent of its state by double-clicking it, assign the
4.13.8 Files
Puts the focus in the File table.
See Directory Tree and File Table for details
4.13.9 Output
Puts the focus in the Output view.
4.13.10 Changes
Puts the focus in the Changes view.
4.13.11 Transactions
Puts the focus in the Transactions view.
4.13.12 Main Perspective
Switches to the Main Perspective.
4.13.13 Review Perspective
Switches to the Review Perspective.
4.14 Help menu
Help Topics shows the online version of SmartSVN's help.
- Register switches to the Professional edition.
- Renew Support & Software Updates connects to the SmartSVN store where you can renew your SmartSVN Professional License and Support Package.
- Get Professional Subversion Support connects to http://www.wandisco.com/support/subversion and gives information on our Subversion support contracts.
- 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.
- Use Obfuscate Log Cache to remove potentially confidential 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 configure the checking for new versions within the Preferences.
- Check for Latest Build checks for a newer version of SmartSVN than the one you are currently using and then automatically downloads and installs it. You will then be asked to restart SmartSVN to complete the installation process.
- About SmartSVN shows information about the SmartSVN version you're using and about your SmartSVN license. Also, the SmartSVN license agreement can be read here.
5. Advanced Settings
In addition to the options on the preferences dialog, SmartSVN has some advanced settings that can be set through the configuration file smartsvn.properties. How it is used is described in the following subsection. Additionally, you can change the program's memory limit, which is described here as well.
5.1 System Properties
SmartSVN can be configured by editing the file smartsvn.properties in the settings directory. The smartsvn.properties file contains further documentation about the available settings, so the latter will not be listed here. In this section, we will only show an example in order to give a general idea of how to alter settings in the smartsvn.properties file.
First, open the settings directory. In the settings directory, you will find the smartsvn.properties file. Open it with a text editor.
The default location for the settings directory is as follows:
- Windows: The configuration files are located below %APPDATA%\Roaming\WANdisco\SmartSVN. Note: Before version 5, configurations files have been stored below %USERPROFILE%\.smartsvn.
- Mac OS: The configuration files are located below ~/Library/Preferences/SmartSVN.
- Unix/Other: The configuration files are located below ~/.smartsvn.
5.1.1 Standard Properties
-
smartsvn.defaultConnectionLogging=true
Determines whether connection logging is enabled by default for all commands. Enabling this is useful for investigating connection-related problems, which usually occur only rarely. Note that the file connection.log is recreated (and possibly overwritten) everytime SmartSVN starts, so remember to make a backup of that file before the next restart of SmartSVN.
-
smartsvn.commit.disallowedFilenameCharacters=
Lists the filename characters that should be disallowed for committing. This property defaults to: <>:"/\|?*. These characters are reserved on Windows, Unix and Mac OS, and disallowing them in filenames ensures that committed files can be checked out on every platform without problems.
Uncomment this to disable checking for disallowed characters.
-
smartsvn.proxy.timeout
These two settings specify the timeout in milliseconds for connecting to and for reading from a proxy, respectively. Proxies may be used e.g. by "Check for New Version". By default they will be set to smartsvn.proxy.timeout.connect=10000 and smartsvn.proxy.timeout.read=60000
-
smartsvn.shellIntegration.iconifyOutputWindowByDefault=true
When performing an operation, for example a commit, via SmartSVN's shell integration, the Output window is normally opened to report the status of the operation. On the Output window, you can set whether it should be closed automatically after a certain delay. In the case that the window is closed automatically, you can set with this property whether the window should be opened in minimized state by default, in order to make it less intrusive.
-
smartsvn.externals.forceNewSyntax=true
In Subversion 1.5, the syntax for the svn:externals feature was changed. By default, SmartSVN will store all entered externals specifications in the pre-1.5 syntax, even if entered in the new syntax. With this setting, you can force SmartSVN to use the new syntax for storage instead.
-
smartsvn.filemonitor.enabled=false
Set to false to disable the file monitor (which watches for file system changes).
-
smartsvn.filemonitor.exclude=patters1;pattern2;...
If you have filemonitor-related performance problems, you may try configure semicolon-separated patterns for evens that should be ignored.Each pattern may contain wildcards ? or *, e.g. */.ccache;/temp/*.
-
smartsvn.filemonitor.watchNonFixedDrives=false
On Windows, uncomment this line to disable file monitoring for folders that lie on removable drives.
-
smartsvn.filemonitor.watchUncPaths=true
On Windows, uncomment this line to enable file monitoring for UNC paths. Depending on the network drive type, this may slow down file monitoring and/or may not work reliably.
-
smartsvn.ui.splashscreen=false
Determines whether to show the splash screen on startup.
-
smartsvn.ui.verboseDate=false
By default, times from today and yesterday are shown in a short form. To always show the date in the full form, uncomment this line.
-
smartsvn.ui.verboseDate.showOnlyTimeForToday=false
To show only the time (i.e. without "Today") for times from today, uncomment this line.
-
smartsvn.ui.systemtray.linux.enabled=true
On Linux, the system tray is disabled by default due to problems with Unity desktops. To enable the system tray, uncomment this line.
-
smartsvn.ui.toolbar.textRightBesideImage=true
Determines whether to show the text on toolbars to the right of or below the toolbar
-
org.eclipse.swt.accessibility.UseIA2=false
This line is to prevent the SWT bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=371326. If you need advanced accessibility features, comment this line.
-
smartsvn.annotate.maxToolTipWidth=400
On the Annotate view, if the mouse hovers over the yellow line detail column, a tooltip with additional information is shown. With this property you can specify a maximum width in pixels for this tooltip. The specified value must lie in the range [10; 1000]. If the value is not specified or out of range, the default value of 400 pixels is used.
-
smartsvn.annotate.maxComboboxMessageLength=250
On the Annotate view, commit messages are displayed in the combobox in the upper part of the window. This property limits the length of the displayed commit messages, i.e. all commit messages that are longer than this property's value will be truncated.
-
smartsvn.directoryChooser.useOwn=false
Determines whether to use a custom directory chooser dialog rather than the one provided by the underlying platform (e.g. Windows).
-
smartsvn.tree.forceFullSelection=false
Determines whether the tree views throughout the program should use "full selection" style. "Full selection" means that when an item on a tree is selected, the selection box will fill the entire width of the tree, rather than only the item's width.
-
smartsvn.compare.skipBinaryComparison=true
Uncomment this to disable the comparison of binary files. This may be useful if you usually have large binary files in your repositor. When read, these files may slow down certain views, e.g. the "Changes" view.
-
smartsvn.compare.maximumFileSize=1000000
By default, the file comparison is disabled for very large files. Use this setting to adjust when a file is considered 'too large'. This setting's value should be given in bytes.
-
smartsvn.compare.innerLine
The file comparison algorithm consists of two phases: In the first phase, changed lines are detected, and in the second phase, the algorithm will search for changes within corresponding lines. The second phase becomes slower if there are too many long lines, so it is skipped when that happens. These settings allow you to adjust the detection of long lines:smartsvn.compare.innerLine.maximumLineLength=512 and smartsvn.compare.innerLine.maximumLongLineCount=10. The second phase is skipped if the two files contain more than 'maximumLongLineCount' lines that are longer than 'maximumLineLength' characters in length.
-
smartsvn.transaction.messageLength=256
Sets the maximum length of the commit message that is displayed in the Transactions view, in characters. Commit messages whose lengths exceed this limit will be truncated.
-
smartsvn.transaction.maximumFileCount=1000
Sets the maximum number of files or directories per revision to be displayed in the Transactions view. If a revision contains more changed files or directories, it will be truncated, and a note "File display limited" will be added to the commit message.
-
smartsvn.logcache.refreshChillOut
These two properties allow you to adjust the "chill out cycles" for building the Log Cache. This works as follows: Suppose the "refreshChillOutCycle" and "refreshChillOutSeconds" properties have the values N and T, respectively. Then if N > 0, SmartSVN will sleep for T seconds everytime it has processed N revisions. If N = 0, no such chill out cycles will occur. As an example, if N = 1000 and T = 60, SmartSVN will sleep 60 seconds each time it has processed 1000 revisions. Adjusting these chill out cycles may help in taking off some load from a server that has many clients which are trying to build their Log Caches all at the same time. Warning: With these two properties, you can significantly slow down the building of the Log Cache, to the point of making it unusable. By default, they are set to: smartsvn.logcache.refreshChillOutCycle=0 and smartsvn.logcache.refreshChillOutSeconds=10
-
smartsvn.logcache.maximumMessageLength=16384
Sets a length limit for the storage of commit messages, in characters. Commit messages whose lengths exceed this limit will be truncated, and a note about the truncation will be appended.
-
smartsvn.plugin.jira.unreleasedVersionsToDisplay=3
Sets the number of unreleased versions for which "in progress" and "open" issues will be loaded.
-
smartsvn.plugin.jira.resolvedConstant=5
If you are using custom workflows, it may be necessary to reconfigure this integer constant, which is sent when an issue is resolved.
-
smartsvn.plugin.jira.loadAllIssues=true
If this property is set to true, all issues, instead of only "in-progress" and "open" issues, will be loaded. This may cause a lot of network traffic and is therefore generally not recommended.
-
smartsvn.plugin.trac.unreleased-versions-to-display=3
Sets the number of unreleased versions for which assigned, reopened and new issues will be loaded.
-
smartsvn.plugin.trac.incomplete-milestones-to-display=3
Sets the number of incomplete milestones for which assigned, reopened and new issues will be loaded.
-
smartsvn.plugin.trac.resolved-constant=fixed
If you are using custom workflows, it may be necessary to reconfigure this integer constant, which is sent when you select to resolve an issue.
-
smartsvn.plugin.trac.load-all-issues=true
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 therefore generally not recommended.
-
java.net.preferIPv4Stack=false
By default, SmartSVN prefers to connect via IPv4. To connect via IPv6 instead, uncomment this line.
-
smartsvn.logcache.useURLasUUID=true
The Log Cache uses repository UUIDs to distinguish between different repositories, i.e. to detect whether two repositories are identical even when different URLs are used to access them. The latter happens, for instance, if different protocols are used, e.g. "ssh://" vs. "https://". Although not recommended, sometimes a repository may have been created from another repository by simply copying the raw files. In that case both repositories will have the same UUID, which will confuse the Log Cache, and telling them apart is then only possible through their URLs. In a case like that, you may enable this property.
-
smartsvn.logcache.large
When creating a Log Cache, SmartSVN tries to detect whether the repository might be large and hence it should suggest to create a cache only for a certain module instead of the entire repository. A repository will be considered as large if it has more than a certain amount of revisions and more than a certain number of top-level directories ("modules"). Use the following two options to change these thresholds: smartsvn.logcache.large.revisionThreshold=10000 and smartsvn.logcache.large.directoryThreshold=10
-
smartsvn.log.maximumCustomProperties=10
Determines the maximum number of custom property columns to be displayed in the Log pane after you invoke the "Load Properties" command from the "Log" menu.
-
smartsvn.checkForNewVersion=false
Determines whether automatically or manually checking for new program versions is enabled.
-
smartsvn.updateCheck=false
Determines whether automatic update checking is enabled. This does not affect the manual update checking.
-
smartsvn.updateCheckUrl=http://www.syntevo.com/smartsvn/autoupdate
Sets the URL used to check for new program versions.
-
smartsvn.output.maximumFileCount=100
Determines the maximum number of files/directories per command to be displayed in the Output pane.
5.2 Memory Limit
The memory limit, also known as maximum heap size, specifies how much RAM the SmartSVN process is allowed to use. If the set value is too low, SmartSVN may run out of memory during memory-intensive operations. To avoid this, we recommend adjusting your maximum heap size to 3GB when adding or committing a large number of files to a repository. How the memory limit is set depends on your operating system:
- Windows (all users) - In the file bin/smartsvn.vmoptions inside the SmartSVN installation directory, there is a line that looks like this: -Xmx256m. This sets a memory limit of 256 MB. To set a memory limit of 512 MB, change this to -Xmx512m.
- Windows (current user) - The memory limit specified in bin/smartsvn.vmoptions can be overridden on a per-user basis. To do so, create a file named vmoptions in the directory syntevo\SmartSVN inside the application data directory. The location of the latter is usually either C:\Documents and Settings\[Username]\Application Data (for Windows 2000/XP) or C:\Users\[Username]\AppData (for Windows Vista/7). In the newly created vmoptions file, insert a line that specifies the memory limit, e.g. -Xmx512m for a memory limit of 512 MB.
- Mac OS X - Right click on the SmartSVN folder and select "Show Package Contents". Go into the Contents folder and open info.plist. Edit the line -Xmx256m. The memory is given in MB. E.g. To set a memory limit of 512 MB, change this to -Xmx512m.
- Linux - Set the environment variable SMARTSVN_MAX_HEAP_SIZE to the desired value, e.g. 512m for a memory limit of 512 MB. One way to set this variable for all users is opening the file /etc/profile with root priviledges and adding the following line at the end (after unmask xxx): export SMARTSVN_MAX_HEAP_SIZE=512m.
5.3 Notable configuration files
- accelerators.xml stores the accelerators configuration.
- license stores your SmartSVN's license key.
- log.txt contains debug log information. It's configured via log4j.xml.
- passwords is an encrypted file and stores the passwords used throughout SmartSVN.
- project-defaults.xml stores the default project settings.
- projects.xml stores all configured projects, including their settings.
- repositories.xml stores the Repository Profiles, except the corresponding passwords.
- settings.xml stores the application-wide Preferences of SmartSVN.
- tag-branch-layouts.xml stores the configured Tag-Branch-Layouts.
- transactionsFrame.xml stores the configuration of the Transactions frame.
- uiSettings.xml stores the context menu configuration.
5.4 Company-wide Installation
For company-wide installations, the administrator can install SmartSVN on a network share. To make deployment and initial configuration for the users easier, certain configuration files can be prepared and put into the subdirectory default (within SmartSVN's installation directory).
When a user starts SmartSVN for the first time, the following files will be copied from the default directory to their private configuration area:
- accelerators.xml
- project-defaults.xml
- repositories.xml
- settings.xml
- tag-branch-layouts.xml
- transactionsFrame.xml
- uiSettings.xml
The license file (for Enterprise licenses and 10+ Professional licenses) can also be placed into the default directory. In this case, SmartSVN will prefill the License field in the Set Up wizard when a user starts SmartSVN for the first time. When upgrading SmartSVN, this license file will also be used, so users won't be prompted with a 'license expired' message, and can continue working seamlessly.
5.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 SmartSVN's installation directory
- Environment variable JAVA_HOME
- Environment variable JDK_HOME
- Registry key HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
5.6 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, if present. This startup mode is used for the Shell Integration.
- --exit will try to detect a running SmartSVN process and force this process to exit. This allows SmartSVN to be stopped gracefully.
- --transactions will bring up the Transactions Frame instead of the Project Window on startup.
- --repository-browser will bring up the Repository Browser instead of the Project Window on startup.
- project-path will bring up the Project Window and load the project containing the specified project-path.
5.7 Plugins
5.7.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 the commit message text fields. 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.
Workflow
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 SSL-secured JIRA server, you will have to confirm the validity of SSL-certificate fingerprints. In case SSL client authentication is required, enter the path to the Certificate file 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 arecontained in the next three unreleased versions (the number of unreleased versions can be changed in System Properties). If there are no unreleased versions, assigned issues for all versions will be loaded.
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 with the commit 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. Don't mark as resolved will leave the issue as it is.
Requirements
The availability of the plugin functionality for a certain working copy depends on whether bugtraq-properties for the working copy root directory have been configured and whether the bugtraq:url is pointing to a JIRA Issues page. Following types of URLs are recognized:
- http(s)://host:port/prefix/browse/ProjectKey-IssueID
- http(s)://host:port/prefix/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).To do this, select Properties/Bugtraq-Properties. The 'Edit Bugtraq-Properties' window will then open. From here you can configure the JIRA integration. Enter the URL of a JIRA issue replacing the the numerical ID with %BUGID%. For example if the URL of the JIRA issue was:
https://jira.customer.com/browse/ME-123
You would enter:
https://jira.customer.com/browse/ME-%BUGID%
Next, edit the Bug-ID Expression text field by selecting one of the options from the menu button. Click OK and the JIRA integration is complete. The project will now show as modified because of the changes to the SVN directory.
5.7.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 fields (see Commit). 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.
Workflow
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 SSL-secured Trac server, you will have to confirm the validity of SSL-certificate fingerprints. In case SSL client authentication is required, enter the path to the Certificate file and its Passphrase which may optionally be stored by Store passphrase.
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 an accepted state or arecontained in the next three unreleased versions respectively in the three incomplete milestones (the number of unreleased versions can be changed in System Properties). 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 configured individually over Configure 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), or Don't mark as resolved which will leave the ticket as it is.
Requirements
The availability of the plugin functionality for a certain working copy depends on whether bugtraq-properties for the working copy root directory have been configured and whether the bugtraq:url is pointing to a Trac ticket page. The following types of URL are recognized:
http(s)://host:port/prefix/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 enabled for your Trac server (this is usually 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.
5.7.3 Plugin-API
SmartSVN's 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.
- Add custom SVN operations to arbitrary menus.
- Add custom file table columns, e.g. to show custom SVN properties.
- Customize various aspects of the Commit workflow.
- Customize various aspects of the Update workflow.
- Store custom Preferences or project settings.
5.8 Shell integration
SmartSVN offers a shell integration to have the SVN functionality of SmartSVN present in certain parts of the GUI shells, like in file 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).
5.8.1 Commands (Windows and OS X 10.5)
For locally versioned files and directories, the most important SVN commands are available from the shell's context menu. Performing commands from the shell's context menu results in the same dialogs and windows as if performing the commands from the Project Window.
For commands performed from the shell, the same environmental settings are used as when performing them from the Project Window. This especially implies to the Project Settings, if for the current working copy directory, a corresponding project exists. If no matching Project can be found, SmartSVN will use the Default Settings.
From the context menu, use Open Project (or Open SmartSVN if no file/directory is selected) to launch the Project Window and open the corresponding project.
5.8.2 Commands (OS X 10.6)
Unfortunately, Apple has dropped the Finder integration API with OS X 10.6. Hence, SmartSVN can only provide a very simple alternative using socalled services. From the Finder's context menu three commands are available if files or directories are selected: Update from SVN, Commit to SVN and Open in SmartSVN. Note, that because of the limited services API these commands are available independent of the SVN state of these files 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.
5.8.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.
File menu
- Use Show Changes on a selected file/directory to see what has been changed locally by executing the command.
- Use Log on a selected file/directory to see the corresponding Log.
- Use Close to close the frame.
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 Customize).
Overlay icons
The overlay icons show the SVN states for the corresponding files 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. Versioned, but unchanged files and directories do not have a special overlay icon. For all other SVN states, the modified icon is used.
Modified | File/directory is modified in contents/properties. | |
Modified recursively | Directory itself of some file/subdirectory is modified (requiresthe Status Cacheservice running. | |
Added | File/directory is scheduled for addition. | |
Removed | File/directory is scheduled for removal. | |
Ignored | File/directory is not under version control (exists only locally)and is marked to be ignored. | |
Conflicted | An updating command lead to conflicting changes either in contentor properties. | |
Unversioned | File/directory is not under version control, but only existslocally. | |
Root | Directory is a working root and is not modified. |
Server Mode
To provide the shell integration without requiring SmartSVN actually being open, SmartSVN can be started with the --server-mode argument.
Windows Shell Integration
The shell integration adds overlay icons to directory and file views of Windows and SVN commands in the context menu. You will especially see them for the Windows Explorer, but also for other software which uses the native file dialogs of Windows.
InstallationYou can choose to enable the shell integration for the installation of SmartSVN, when using the MSI installers. It's also recommended to have SmartSVN automatically be started with the system startup, so the shell integration is available immediately. The installers offer a corresponding option which will add SmartSVN to the Autostart section, starting SmartSVN in server mode.
UninstallThe shell integration will be uninstalled together with SmartSVN. You can also uninstall the shell integration independently from the Control Panel, Software, using Repair there.
Mac OS X Finder integration
The Finder integration lets you perform SVN commands in the Finder using the context menu.
InstallationOn the first 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.
If the installation by SmartSVN itself fails for some reason, you can install the Finder integration yourself. If the folder 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 login again.
UninstallationUnselect 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 loginThe 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 define SmartSVN as a Login Item. Note, that the Hide option has no effect. If SmartSVN is defined as a Login Item, it will be started in server mode.
Knowledge-Base
Enabling SASL Support for Windows SmartSVN clients
NOTE: Setting up an SASL enabled svnserve server is beyond the scope of this document but you can find further information here: svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.sasl.
Steps
- Ensure that you are using SmartSVN 8.6 or later.
- Obtain and unzip the SASL DLL archive. You can get this from the portable version of SmartSVN available on our website here.
- Unpack SASL DLL from sasl-win32.x86.zip. Extract the contents and save them in a new directory called SASL in your SmartSVN installation directory.
- In the SASL directory, create a new text file called svn.conf.Ensure that it does not end up being named svn.conf.txt.In this file, copy and paste the following contents:
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /opt/my_sasldb
mech_list: DIGEST-MD5 - Open regedit and navigate to one of the following keys depending on your version of Windows:
- For 32-bit: HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library
- For 64-bit: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Carnegie Mellon\Project Cyrus\SASL Library
- Finally, if SmartSVN is already running, fully close it. You may need to do this via the SmartSVN icon in the system tray. Then reopen the program.
You should now be able to access your repositories that are served using some form of SASL authentication.