mac svn 服务器及客户端

闲来无事,自己在Mac系统上搭建了一个svn服务器,跟大家分享一下。

Mac系统已经自带了svn,我们已经不需要安装svn服务器了,简单的几步配置就可以开启我们的svn服务器了。

1、打开terminal,可以使用如下命令确定我们的Mac OS系统确实已经安装了svnserve。

1
2
3
4
5
6
7
8
$ svnserve --version
svnserve, version 1.6.18 (r1303927)
    compiled Aug  4 2012, 19:46:53
Copyright (C) 2000-2009 CollabNet.
Subversion is  open  source  software, see http: //subversion .apache.org/
This product includes software developed by CollabNet (http: //www .Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_fs : Module  for  working with a plain  file  (FSFS) repository.

2、创建仓库

新建一个目录

1
sudo  mkdir  -p  /data/svn/repositories/local

这个/data/svn/repositories/local目录将用来作为我们的仓库。

创建仓库

1
sudo  svnadmin create  /data/svn/repositories/local

仓库创建成功后,我们可以到仓库下面看一下,svnadmin自动帮我生成了仓库。

1
2
3
4
5
6
7
8
9
cd  /data/svn/repositories/local/
$ ll
total 16
-rw-r--r--   1 root  wheel  229 12 14 01:33 README.txt
drwxr-xr-x   5 root  wheel  170 12 14 01:41 conf
drwxr-sr-x  16 root  wheel  544 12 14 02:07 db
-r--r--r--   1 root  wheel    2 12 14 01:33  format
drwxr-xr-x  11 root  wheel  374 12 14 01:33 hooks
drwxr-xr-x   4 root  wheel  136 12 14 01:33 locks

3、配置

首先修改conf文件夹下的svnserve.conf文件,内容如下

1
2
3
4
5
6
[general]
anon-access = none
auth-access = write
password-db =  passwd
authz-db = authz
[sasl]

接下来修改conf下的passwd文件,在[users]后面加入一下内容

1
2
administrator = admin@Svnserver
xiayong = xiayong

这里添加了两个用户,并分别设置了密码

接下来修改conf下的authz文件,设置权限

1
2
3
4
5
6
7
8
9
[ groups ]
admin = administrator
user = xiayong
[/]
@admin = rw
@user = r
[ local :/]
@admin = rw
@user = r

简单解释一下这个配置,首先定义了两个组,admin 和 user ,admin这个组里面有administrator这个用户(一个组里面可以有多个用户,多个用户用逗号隔开),user这个组里面有xiayong这个用户,当然不是一定要把用户归到某个组里面, 我这么做是为了方便设置权限。然后设置了根目录的权限,要说明一下这个 / 目录是指我的/data/svn/repositories/目录。然后设置了我的local这个仓库的根目录权限,r是读,w是写。权限设置大家可以根据自己的情况设置,这里不多说,继续往下。

最基本的配置到这里就结束了,我们可以启动我们的svn服务器了

4、启动SVN

1
sudo  svnserve -d -r  /data/svn/repositories  --log- file = /var/log/svn .log

Ok,svn默认使用3690端口,如果端口不冲突,svn服务应该就正常起来了,简单的测试一下

1
2
3
4
5
6
7
$ telnet localhost 3690
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is  '^]' .
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) )


5、创建默认目录结构(可选)

接下来我们创建默认目录结构。首先我们在本地把目录结构建立好

1
2
3
4
sudo  mkdir  -p  /tmp/svntemp
cd  /tmp/svntemp/
sudo  mkdir  tags trunk branches
$

接下来将本地目录结构倒入到我们的svn仓库中

1
2
3
4
5
6
7
8
9
10
sudo  svn  import  -m  'init repo'  /tmp/svntemp/  svn: //localhost/local
Authentication realm: <svn: //localhost :3690> af662c40-23bf-43f4-93fa-8bf7eff40771
Password  for  'root' :
Authentication realm: <svn: //localhost :3690> af662c40-23bf-43f4-93fa-8bf7eff40771
Username: administrator
Password  for  'administrator' :
Adding          /tmp/svntemp/trunk
Adding          /tmp/svntemp/branches
Adding          /tmp/svntemp/tags
Committed revision 1.

我是使用administrator这个用户导入的,因为目前只有这个用户才有权限。


现在我们的svn服务器已经可以用了,可以使用svn://localhost/local来访问我们的local这个仓库,当然不要忘记了,我们刚才新添加了目录,需要修改权限。

1
2
3
4
5
6
[ local : /branches ]
@user = rw
[ local : /tags ]
@user = r
[ local : /trunk ]
@user = rw

6、让SVN服务随操作系统启动(可选)

查看svn内存使用情况

032837976.png

svn在空闲时候才占了420k的内存而已,所以我决定让svn随Mac系统一起启动,编辑/etc/rc.local文件,在这个文件中加入以下内容(此文件在Mac系统中是没有的,需要手动创建)

1
2
# to run the svnserver on the automatically.
svnserve -d -r  /data/svn/repositories

如果停止用:

sudo  killall  svnserve


authz

##################

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
user=yangzm

[/]
user=rw

[local:/]
user = rw
*=rw

##################


svnserve.conf

#################

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
# realm = My First Repository
# force-username-case = none

[sasl]
# use-sasl = true
# min-encryption = 0
# max-encryption = 256

#################


passwd

###############

[users]
yangzm=yzm123

###############


svn 客户端 用smartsvn for mac

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

  1. 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.

  2. Navigate to the new SmartSVN 8.6 folder and select the bin folder.
  3. Start the smartsvn.sh file and the SmartSVN Setup wizard should start.

2.1.2 Mac

  1. Open the downloaded SmartSVN .dmg file.
  2. Drag the SmartSVN.app to a directory of your choice, e.g. /Applications.
  3. Start the SmartSVN application from there.

2.1.3 Windows

  1. Extract the installer zip archive file to your local drive.
  2. Start the installer setup-8_5-rc-2-jre.exe and follow the steps.
  3. 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.

  1. Select your required option and click OK. Usually you want to check out a project from an existing repository.
  2. 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.

  3. 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.
  4. Select the repository directory you want to check out and click Next.
  5. Choose where your working copy will live on your local machine.
  6. By default SmartSVN checks out any subdirectories of the directory you select. To change this use the Checkout Depth dropdown list.
  7. Click Continue.
  8. Choose whether to add a new project into SmartSVN, and select a group if needed.
  9. 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 copyUse 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 repositoryUse 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:
    UnchangedFile is under version control, not modified and equal to itsrevision in the repository, i.e. to its pristine copy.
    UnversionedFile is not under version control, and only exists locally.
    IgnoredFile 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.
    MissingFile is under version control, but does not exist locally.
    AddedFile is scheduled for addition.
    RemovedFile is scheduled for removal.
    ReplacedFile has been scheduled for removal and was added again.
    CopiedFile has been added with history.
    History-ScheduledA parent directory has been added with history, which implicitlyadds this file with history.
    RemoteFile does not exist locally, but only in the repository.
    ConflictAn update command lead to conflicting changes either in contentor in properties.
    MergedThe file has been merged.
    IncompleteA previous update was not completed.Run the update again to finish it.
    Name conflictThere 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.
    ObstructedA 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.
    InaccessibleThe file's content is not accessible, so its state (modification)cannot be determined.It's probably locked by another application.
    PhantomThe file neither exists locally nor is versioned, but is stillpresent in the working copy metadata (.svn directory).
    Case-ChangedThe case of the file name has changed on an operating systemthat is case-insensitive with respect to file names.
    SwitchedFile is switched,compared to its parent directory.
    Tree ConflictThe 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:

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 <Ctrl>+<Space> 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.

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:

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.

Passwords

Use 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/Tunnels

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 Tools

This 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 Viewers

An 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.

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.

Storage

The 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 Ignores

The 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 Files

Choose 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 Style

This option specifies the Default EOL-Style, which is used when adding a file:

Locks

Use 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.

Conflicts

By 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.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.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 StateScheduleTextual representation of the local state of the file
LockLock OwnerLock state of the file
Last Rev.Last Changed Rev.Revision in which this file has been committed
Last ChangedLast Changed DateTime of the last commit of the file
Text UpdatedText Last UpdatedTime 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 UpdatedProperties Last UpdatedTime 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 AuthorLast Changed AuthorLast author, i.e. who performed the last commit on the file
Typesvn:mime-typeThe file's type
EOLsvn:eol-styleEnd-Of-Line Type of the file
Keyw.svn:keywordsKeyword substitution options of the file
Needs Locksvn:needs-lockWhether the file should be locked before working
Executablesvn:executableWhether the file has the Executable-Property set
Merge Infosvn:mergeinfoWhether 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 FromCopy From URL/RevLocation 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 StateRemote state of the file
Ext.The file's extension
Relative DirectoryParent directory of the file relative to the selected directory
File TimeThe local time of the file
Attrs.Local file attributes: R for read-only and H for hidden
SizeThe local size of the file
BranchThe tag/branch to which the file is currently.
Change SetThe 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.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 Commit
Add
- see Add
Remove
- see Remove
Ignore

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 physically

4.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 Move

4.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 Revert

4.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 Fix

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.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<Ctrl>+<Space>-keystroke.

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.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 Log

4.8.10 Revision graph

- see Revision graph

4.8.11 Annotate

- see Annotate

4.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 Conflicts

4.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.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:urlURL
bugtraq:warnifnoissueRemind me to enter a Bug-ID
bugtraq:labelMessage Label
bugtraq:messageMessage Pattern
bugtraq:numberis true exactly if Bug-ID is set to Numeric
bugtraq:appendis true exactly if Append message to set to Top
bugtraq:logregexFor 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.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.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.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.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 Tree

The 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 Table

The 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 Filters

The 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 Filters

With 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 click

By 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 <Enter>-keystroke accelerator (Accelerators) to the Query|Open menu item.

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.

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.

ModifiedFile/directory is modified in contents/properties.
Modified recursivelyDirectory itself of some file/subdirectory is modified (requiresthe Status Cacheservice running.
AddedFile/directory is scheduled for addition.
RemovedFile/directory is scheduled for removal.
IgnoredFile/directory is not under version control (exists only locally)and is marked to be ignored.
ConflictedAn updating command lead to conflicting changes either in contentor properties.
UnversionedFile/directory is not under version control, but only existslocally.
RootDirectory is a working root and is not modified.
Overlay Icons
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.

Installation

You 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.

Uninstall

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

Mac OS X Finder integration

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

Installation

On 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.

Uninstallation

Unselect the option Integrate in Finder on the Finder Integration page of the Preferences.

To manually uninstall the Finder integration, just delete ~/Library/Contextual Menu Items/SmartSVN CM.plugin and log out and relogin again.

Automatic start at login

The Finder integration will only work when SmartSVN is running. The easiest way to do that automatically, is to let SmartSVN be launched at login. Just right click the SmartSVN dock icon and select Open at Login. Alternatively, you can use the Accounts panel in the System Preferences to 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

  1. Ensure that you are using SmartSVN 8.6 or later.
  2. Obtain and unzip the SASL DLL archive. You can get this from the portable version of SmartSVN available on our website here.
  3. 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.
  4. 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
  5. 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
    Edit the ConfFile and SearchPath keys with the path to the SASL folder you made in step 3, by default C:\Program Files\SmartSVN\SASL. Note: create the SearchPath keys if they don't exist.
  6. 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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值