# subcommander

The Subversion Client

This chapter describes subcommander, its features and how to use them.

## The Main Window

The screen shot below () shows subcommanders main window. It has three major items. On the left is the Project Folder View. It is a tree view that shows all configured projects as top level items.

Project Folder View

On the right is either a Repository View or a Working Copy View. Which one is displayed depends on the current selection in the Project Folder View. The Repository View displays detailed information about the items (files and folders) in the repository. The Working Copy View shows details about the items in the working copy.

Repository View
Working Copy View

Since the Working Copy View is the most used display we take a closer look at it now and summarize the most important information that is also hidden elsewhere in this documentation.

The working copy display depends on a few options which can be set or unset in the tool bar (). Most interesting are All and Recursive (the third and fourth toolbar button).

On first start All will be off and Recursive on. All on means display all files and dirs. All off means display only the modified items (with background colors indicating the type of modification). Recursive On will show a flat view (a simple list) and Recursive off will show a tree view.

The combination All off/Recursive on will show only the modified items, recursive in a flat view. It will simply list any modified item at any depth in the working copy tree. You will only see what is important. Typically this is the list of items your are currently working on. If you are familiar with the subversion command line client you will recognize that it is the same information displayed by `svn status`. It is subcommanders preferred view.

If you have a clean working copy it will only show the working copy root, ie. the "." entry. Modify something and reload the view (rightmost toolbar button) to see the item you have just modified.

The combination All on/Recursive off will show a tree view similar to a file explorer. You have to open or enter a dir to view any changes in that folder (enter by double click, go back by double click on the "." item, this also works in the flat view).

Subcommander does not mark a folder in the tree view as modified if anything below it is modified (like TortoiseSVN does with its overlay icons).

The combination All off/Recursive off is similar to the previous tree view display but will only list the modified files. It will show all folders because without folders it would be impossible to navigate the tree... :)

Back to the main window. At the bottom of the main window is the Log Output View. Subcommander writes information about each command it runs on a repository or a working copy to it.

Log Output View

subcommander Main Window

The three views are separated by splitter widgets. Special about them is that clicking on the handle does hide one on of the split widgets. Clicking the vertical splitter handle hides (or shows) the Project Folder View. Clicking the horizontal handle hides (or shows) the Log Output View.

### Main Window Menus

Subcommander has a couple of menus that contain all the commands which you can use to handle your projects.

The Project menu, the ReposFolder menu and the WcFolder menu list the commands you can run on project items, repository items or working copy items in the Project Folder View. The commands in each menu are only enabled if a corresponding item is selected in the Project Folder View. Each menu is also available as a context menu on a selected item.

The Repos menu contains the commands you can run on items in the Repository View and the Wc menu contains the commands available in the Working Copy View. Both menus are also available as context menus.

If this guide is refering to a command in a specific menu you can in most cases run the command also from the context menu of the selected item.

### Project Folder View

Opening a project in the Project Folder View will normally show a couple of sub items. These sub items bookmark repository URLs or working copy paths. Usually you will have bookmarks that represent the trunk folder, the branches folder, the tags folder and bookmarks that link to the working copies of the project. The trunk, branches and tags bookmarks are special bookmarks which tell subcommander the layout of your project. You don't have to use them but they are usefull for creating branches and tags. If you provide the layout URLs you don't have to tell subcommander where to place a branch or tag. You just have to give a name for the new branch or tag and subcommander will create it in the configured branches or tags folder. While you can have only one of each of the special bookmarks you can have any number of repository and working copy bookmarks. Moving the mouse pointer over a bookmark shows its repository URL or in case of a working copy bookmark its local file system path in the status bar.

#### Browsing the Repository

You can browse a repository by selecting the corresponding bookmark. The right view will change to the Repository View displaying the content of the selected bookmark. You can now browse the repository in the same manner as you would browse a file system path in a file manager. By double clicking a folder in the Repository View you can navigate into that folder. By double clicking the "." (the current folder) you will move back to its parent folder.

Using the ReposFolder menu you can run several commands on the selected repository item. The different commands are described in .

Repository browsing the ...

#### Viewing the Working Copy Status

Selecting a working copy bookmark of a project displays the status of the working copy. The right side of the main window turns to the Working Copy View where it shows detailed information about the modifications to your working copy (See also the next section and ). By double clicking a folder you can navigate into that folder. By double clicking the "." (the current folder) you will move back to its parent folder. Disabling the recursive working copy option will display the working copy in a tree view instead of a flat (recursive) view. When you run subcommander for the first time, working copies will be displayed in a flat view which only displays modified items, i.e. if your working copy doesn't have any modifications you will only see a single "." entry wich represents the working copy root.

The WcFolder menu contains the different commands () you can run on the selected working copy item(s).

Working Copy viewing the ... status

#### Tool Bar

The tool bar () contains options which control the working copy status display in the Working Copy View, general options that influence several commands and a reload button to refresh the Working Copy View or the Repository View. The toolbar is grouped in three blocks. The leftmost block control the working copy status display (working copy options), the middle block contains the general options which are used by most commands as the preselcted value. The righmost block contains the reload button that refreshes a repository view or working copy view by re-running the list or status command.

By default subcommanders status display shows all items (files and folders) with modifications in a flat view. It displays any modification of an item no matter at what level (..below the selected folder) it is in the directory hierarchy of the working copy. It does not display any unchanged item.

The flat view is enabled when (Wc Status) Recursive is enabled. If Recursive is disabled subcommander displays only the modifications of the direct children of the selected working copy item.

tool bar recursive

The (all Commands) Recursive option is used by most commands that work on a working copy. For example adding a folder with recursive enabled does add the folder and all its sub items. Without recursive it does only add the folder.

subcommander Tool Bar

Enabling View All displays all items in a working copy. With or without modifications. View All is most useful if (Wc Status) Recursive is disabled. If both are enabled subcommander shows a flat view of all items in your working copy. This can get very slow...

tool bar view all

Enabling View Ignored lets you see the files or folders in the working copy you have added to the `svn:ignore` property (see also ).

tool bar view ignored

With View Updates you can tell subcommander to show you the items in the working copy that have a newer revision in the repository than the latest revision you received from the repository by a checkout or by an update of your working copy.

tool bar view updates

In normal usage the subversion library prevents you from running certain operations (for example: moving a modified file). You can Force the operation to run if you know what you are doing.

tool bar force

Changing the state of one or more tool buttons doesn't automatically update the view. You have to press Reload to make subcommander use the new configuration in the Project Folder and the Working Copy View.

tool bar reload

The Reload button is not limited to changes of the configuration. You have to press Reload to update the display of the current repository or working copy after any command you issue from subcommander. That means after adding, deleting, renaming or moving etc. you need to Reload to get an up-to-date display. That is like running the `status` command with the subversion command line client in the shell after modifying your working copy.

Wc Status Recursive and View All

The note above about View All being most useful in combination with not Recursive is most important for very large working copies. If your working copy has hundreds of files and folders the flat status display will be very slooow...

In most cases you will be interested only in the status for a part of your working copy. By toggling Recursive (to not recursive) and View All (to view all) you can quickly navigate to the place of interest and switch back to the normal flat status display.

Another reason to toggle is to locate an item you want to delete or move. If the item is unchanged it is not shown in the normal (flat, no view all) status view. By toggling you can easily navigate to the item, delete or move it and then turn back to normal status view.

tool bar
Project Folder View

### Repository View

If you select a repository bookmark in the Project Folder View the right side of the main window switches to the Repository View (). It displays all items which are children of the selected repository item.

subcommander Repository View

For each item it shows its name and some additional information. This is the same information you receive if you run the `list` command with subversions command line client.

The File Size column displays the size of the file.

The columns Revision of last Commit, Time of last Commit and Author of last Commit show information about the last committed change to the item. The revision the last change was committed, at what time it was committed and who was the committee.

The has Properties? Column tells you if the item has properties ().

By opening the context menu or the Repos top level menu you can select different commands you can run on the currently selected item(s). The commands are described in .

Column Configuration

If you prefer another column order you can move the columns around by dragging a column header and dropping it on a new position. Subcommander will save your configuration and restore the column order when you run subcommander the next time.

Repository View

### Working Copy View

Selecting the working copy item of a project turns the right side of the main window to the Working Copy View (). It displays the details about your working copy. That is the same information you receive by running the `status` command with subversions command line tool on your working copy.

subcommander Working Copy View

With the tool bar buttons you have a few options to modify what subcommander displays in the Working Copy View. The tool bar buttons are described in .

To get a better and quicker overview of the current status, subcommander uses different background colors to highlight certain file states like added, deleted or modified. The states and their colors are listed in . If you prefer other colors you can change them in the settings dialog.

The Text column displays if an item (file or folder) is changed. It uses the same codes as subversions `status` command. For the more common codes subcommander uses different background colors as described in the previous paragraph.

Properties shows the status of the items properties. This column also uses the `status` codes.

WC Locked shows if a working copy item is locked by another activity on the working copy. This has nothing to do with locks on files to prevent concurrent editing.

Added with History shows a plus sign if the item was added by copying it from another item in the working copy.

Switched shows an S if the item is switched relative to its parent folder.

Locked shows if a file is locked to prevent concurrent editing. It uses the same codes as subversions `status` command.

Update tells you if there is a more recent version of an item in the repository than in your working copy. You have to enable this feature in the tool bar (). Note that this needs a connection to your repository.

After the name of a working copy item in the Project Folders View you can see its working copy Revision. This is the same information provided by running subversions `svnversion` tool on the selected working copy path.

By pressing SHIFT F1 in the Working Copy View you can see a more detailed description of the columns, the colors and the displayed information.

Column Configuration

If you prefer another column order in the working copy view you can move the columns around by dragging a column header and dropping it on the new position. Subcommander will save your configuration and restore the column order when you run subcommander the next time.

Working Copy Colors

State | Background Color
--- | ---
unchanged | white
unknown (not under version control) | light grey
ignored | grey
added | blue
modified | green
deleted | red

Working Copy View

## Projects & Bookmarks

The way to group repositories and working copies in subcommander is a Project.

A Project in subcommander can contain three special URLs to the repository and any number of repository and working copy bookmarks. The special URLs are the trunk folder of the repository, the branches folder of the repository and the tags folder of the repository. Since subversions branches and tags are only branches and tags by convention you have to tell subcommander where they are placed in the repository. That way you don't have to enter them every time you want to do something with a branch or tag. Any other bookmark into a repository has no special meaning.

The Projects are displayed in the Project Folders View (see ).

### Adding a New Project

You can create a new project either by using the new project.. item from the Project menu or by drag and drop. The menu item will add a new project item to the Project Folder View and switch it to edit mode so you can directly enter a name for the new project.

The other way to set up a new project is to use drag and drop. You can simply drag an URL from another application (like a web browser) and drop it into the Project Folder View (not on a project). Dropping the URL will automatically create a new project and will ask which slot the URL should fill. I.e. if the URL is the trunk, branches or tags URL.

In the same way you can drop multiple local directories from a file browser to the Project Folder View and tell subcommander to use the directories as working copies. Each working copy gets the last section of its path as the name in the project.

Adding, editing and deleting bookmarks from the new project can be done by choosing the corresponding item from the context menus of a project or a bookmark.

Project add a ...

### Modifying a Project

You can modify an existing project using the menu items in the Project menu or from the Settings Dialog.

Open the dialog from the Tools menu and select the project from the Projects category to edit it. You can directly open the project page in the settings dialog if you select the project and choose project settings.. from the Project menu.

subcommander Project Settings

To add folders, repository URLs or working copy paths, change to the project folders tab. Subcommander can help you to fill the URLs for trunk, branches and tags. In case your repository uses the standard repository layout (you don't have to) you can enter the root URL of your repository as the URL for the trunk type. Select the trunk folder, normally the first entry in the list view control, and enter the root URL in the edit control below the list view. Then press use Standard Layout to automatically fill the URLs with the root URL and an appended `trunk`, `branches` and `tags` string.

You can also modify an URL by browsing the repository with browse Repository.

To add a working copy Clear the edit controls and change the Project Folder Type to working copy. Enter a name and a path and finally press Add to add the new working copy. Selecting an existing working copy form the list view and pressing Add will duplicate it.

Another way of modifying a working copy path is by browsing the filesystem with browse Filesystem.

Project modify a ...

### Removing a Project

To remove a project select it in the Project Folder View and run remove from the Project menu. Subcommander will request a confirmation that you really want to delete the project so you don't remove it by accident.

Project remove a ...

### Changing the Order of Projects

You can simply drag a project root item and drop it on another project root item to move the source project to the location of the target project in the Project Folder View.

Project change ... order

### Adding Bookmarks

To add a new working copy or to change one of the URLs in a project you can use drag and drop in the same way you can create a new project. The only difference is that you drop the URL or paths directly on a project item. Subcommander will ask you where to place the dropped URL or paths. An URL will overwrite an existing URL in the same slot and working copies will be added to the project.

Bookmark add a ..

### Modifying Bookmarks

Bookmark settings can be modified in the Bookmark Properties Dialog. You cann edit its name, its path or URL and in the case of a working copy you can activate the auto update option. Open the dialog by selecting edit.. from the bookmark menu.

Bookmark modify ..

### Changing the Order of Bookmarks

To change the order of the bookmarks in a project simply drag a bookmark and drop it onto its new position.

Bookmark change ... order
Project

## The Commands

This chapter describes the available commands for handling your projects.

### Checkout a Working Copy

To work on a project you need a working copy. You create a working copy by checking it out from a repository. There are two ways in subcommander to do this: from a repository item or from a working copy item. Normally you checkout from a repository item in the Project Folder View.

#### Checkout from a Repository Item

To checkout a working copy from a repository select a bookmark in the Project Folder View or an item in the Repository View and choose checkout from the context menu.

You can enter a Working Copy Path or select one by using browse Filesystem. You can not edit the repository URL. It is filled with the URL of the selected repository item.

By default subcommander checks out the head revision from the repository. If you need another revision you can select it from the Revision control.

Enabling Add To Project tells subcommander to add the new working copy to the current Project. The working copy name will be the last section of its path.

subcommander Checkout from Repository Item

#### Checkout from a Working Copy Item

Selecting a working copy item in the Project Folders View normally shows the status of the working copy. In case your working copy path is just a path and not a real working copy, for example because you didn't select an existing working copy but an empty folder in the project setup, subcommander will ask you to checkout a working copy.

subcommander Checkout from Working Copy Item

The working copy path is filled with the path from the selected working copy item. You can't modify it. This time you can only select the Repository URL you want to checkout. The repository URL is populated with the trunk, branches and tags URL you have configured in the project. You can modify it or select another URL from the browse Repository button.

Commands checkout

### Export from Working Copy or Repository

You can export from a repository URL or from a working copy path. Select the Source URL or Path in the project folder view or a folder in the Working Copy View and choose export from the context menu.

In the export dialog you can enter the Destination Path for the export. You may also change the Source Revsion or change the EOL style.

subcommander Export Repository or Working Copy Item

Commands export

### Update a Working Copy

To get the latest changes for your working copy from the repository select the working copy item in the Project Folder View and select update from the context menu or from the WcFolder menu.

If you want to update a working copy to a specific revision use update.. instead of update. update.. will open a dialog where you can choose the revision. The dialog based update is also available in te working copy view on individual items.

Commands update

### Add, Delete and Revert Items in a Working Copy

You can add new items (files or folders) to a working copy, delete items from a working copy and revert items (undo changes made to an item) simply by selecting them in the Working Copy View and choosing the corresponding add, delete or revert item from the Wc menu.

All three commands honor the current Recursive setting (see ).

#### Add Items to a Working Copy

Unversioned items are displayed as unknown in the Working Copy View (see ). Select the unversioned item and choose add from the context menu or the Wc menu to add it to the working copy. You can select multiple items to add them in one step.

After reloading (using the R tool bar button, see ) the Working Copy View subcommander shows the added item(s) with a blue background.

Adding a folder will recursively add all sub items of that folder.

Commands add

#### Delete Items from a Working Copy

To delete an item from your working copy select it in the Working Copy View and choose delete from the Wc menu. You can also select multiple items to delete them in one step. Since by default subcommander shows only modified items in the Working Copy View you may need to toggle the View All button in the tool bar (See the sidebar Recursive and View All in ).

Deleting an added file does not only remove it from the working copy but it also deletes it from the file system.

From time to time your working copy will contain unversioned items you don't want to add to version control and you don't want to ignore. You can remove those items (files or folders) in the same way but note that you won't be able to restore them.

After reloading the Working Copy View the deleted items (when they were versioned) are shown with a red background.

Commands delete

#### Revert Items in a Working Copy

You revert a modified item (green background) back to its unmodified version by selecting it in the Working Copy View and choosing revert from the Wc menu. You can select multiple items to revert all of them in one step.

Reverting an added item does only remove it from the working copy. It does not delete it in the file system.

Reload the Working Copy View to update the working copy status. The reverted items are no longer shown as modified.

Commands revert

### Rename Items in a Working Copy

You rename an item in a working copy by clicking it a second time after selecting it in the Working Copy View. The item will change to edit mode and you can modify its name. Press enter to execute the change or escape to cancel it.

Note that the change is not visible before you reload the view.

Commands rename

### Rename Items in a Repository

Renaming an item in a repository is as simple as renaming it in the working copy. It is done by in-place editing its name. Press enter to execute the change or escape to cancel it. The only difference is that subcommander will ask for a commit message.

Note that the change is not visible before you reload the view.

Commands rename

### Move and Copy Items in a Working Copy

To move items in a working copy select them in the Working Copy View and drag them to the destination folder in the Working Copy View. After dropping on the destination folder reload the Working Copy View to update the status.

To copy the items instead of moving them hold down the control key while dropping them.

Commands move
Commands copy

### Move and Copy Items in a Repository

Moving and copying in a repository works in the same way as in the Working Copy View: by drag and drop. The only difference is that you can only move single items in the repository (which is currently a limitation of subversion). Since this operation takes place in the repository subcommander will ask for a commit message after dropping the item.

To copy an item instead of moving it hold down the control key while dropping it.

Commands move
Commands copy

### Import into the Repository

To import new files and folders into a repository select the target Destination URL in the Repository View and choose import from the Repos menu. Enter the Source Path to the folder you like to import. You can browse the file system with browse Filesystem.

To import a single file you need to add the name it should have in the repository to the Destination URL.

subcommander Import to Repository Item

If you select a folder as the source the import will add the files in the selected folder to the Destination URL. You have to add the folder name to the Destination URL if the import should include the folder itself.

Commands import

### View File Differences in a Working Copy

You can review the changes you have made to an item by selecting it in the Working Copy View and choosing diff from the context menu.

In case the item is a file subcommander runs submerge to display the original and the modified version of the file side by side. In case it its a folder subcommander will display the modifications as a patch file. Submerge is described in .

Commands diff

### Commit Changes from a Working Copy

You have several options to select the items you like to commit to the repository. You can select a working copy bookmark in the Project Folder View or in the Working Copy View to commit all changes below that folder. You can also choose them by selecting multiple items in the Working Copy View.

After you have selected the item(s) you like to commit, choose commit from the context menu. The commit dialog opens and you can set the Commit Options and enter a Log Message that describes your changes. The Commit Log History keeps your latest commit messages. Selecting a message from the history appends it to the current log message.

Any changes to the commit options have to be done before triggering List Items. Finally, choosing Commit does transfer everything to the repository.

subcommander Commit Dialog

Commands commit

### Create Folders in a Working Copy or a Repository

To create a new folder in the working copy or the repository select the parent folder of your new directory in the Repository or Working Copy View. You may need to toggle recursive and view all to navigate to the parent folder (see the sidebar in ). Then choose mkdir from the context menu and enter the name of the new folder.

If you create a folder in the repository subcommander will ask for a commit message.

subcommander Mkdir Dialog

Commands mkdir

### Set, Edit and Delete Properties in a Working Copy

Setting, editing or and deleting properties is done from the properties dialog. You open the dialog by selecting properties from the context menu in the working copy view.

On its left side the dialog lists the current Properties of the item. By selecting a property from the list its value gets displayed in the Property Value field on the right side.

subcommander Properties Dialog

To change a property value edit the Property Value and press Set Property Value to store its new value.

To add a new property select or enter its name in the New Property field and press New. The new property name is added to the properties list. To actually set the new property enter a value and press Set Property Value.

If the item on which you add or change the property is a folder you can select the recursive flag to set the property on all items in and below the folder.

You delete a property by pressing Delete Property after selecting it from the properties list.

Commands properties

### Add Items to the svn:ignore Property

If you have some files in your working copy that are needed or generated by your build environment and which are not under version control they are displayed as unknown items in the Working Copy View. You can hide those items in the Working Copy View by ignoring them.

Select the items you want to hide and choose svn:ignore from the context menu to hide them. You can select multiple items at any depth. Subcommander adds each item to its parents svn:ignore property.

To temporarily unhide the ignored files toggle the View Ignore button in the tool bar (see ). To unhide an item permanently remove it from its parent folders svn:ignore property (see ).

Commands svn:ignore

### Create Branches and Tags

You create a branch or tag by selecting the source folder in the Repository Folder View and running branch or tag from the context menu.

The Source URL is filled with the selected item. The Destination URL is filled with the branches URL from the Project if you choose branch and with the tags URL from the Project if you choose tag. You only need to enter a Branch/Tag Name for the new branch or tag. If necessary you can specify a Revision for the source URL.

subcommander Copy Dialog

Commands branch
Commands tag

### Switch a Working Copy

You switch your working copy to a branch or tag by selecting the branch or tag in the Repository Folder View and then running switch from the context menu. Your working copy gets switched to the head revision of the branch or tag.

Subcommander does request a confirmation so you don't switch by accident.

Commands switch

### View History of Repository Items

To view the history (commit (or log) messages) of an item select the item either in the Project Folder View, the Repository View or the Working Copy View. Then choose log from the context menu to open the log dialog. The log dialog is explained in .

Commands log

### Merge into a Working Copy

Merging changes into a working copy is done with the Merge Dialog. Select the Merge Source in the project folder view and choose merge from the context menu to open it. In the dialog you can select the Source Revisions and the Merge Destination working copy.

The peg revision is only available if you use a single Merge Source. It will be disabled if you want to merge the differences between two Merge Sources, for example two tags, into a working copy.

The easiest way to merge a number of known revisions into a working copy, like merging bugfixes from trunk to a branch, is to open the log dialog on the Merge Source. Select the revisions you like to merge and choose merge from the context menu. This will open the Merge Dialog with already filled revisions. You just need to press Ok in the dialog to make the merge happen. This is described in more detail in .

subcommander. Merge Dialog

Commands merge

### Resolve Merge Conflicts in a Working Copy

If you need to resolve conflicts caused by merging changes into your working copy select the file in the working copy view. Choose edit conflict from the context menu to run submerge and resolve the conflicts. See for a description of merging a file in submerge. TODO mention the temporary files used to do the three way merge.

After you have resolved the conflicts you have to tell subversion that you resolved the conflict. To do that run resolved conflicts from the context menu on the same file.

Commands conflict edit
Commands conflict resolve

### View Blame Information

Sometimes if you like to know who or when a line in a file was changed the last time run blame on it. Select the file in the working copy view and choose blame from the Wc menu.

After running the blame you can see the previously mentioned information. You can restrict the information to a revision range by modifying the Start Revision or the Stop Revision. If a line was changed the last time before or after the given range the blame won't list the revision, date and author info for it. The columns will be empty.

subcommander. Blame Dialog

Commands blame

### Cleanup a Working Copy

Cleanup cleans up the working copy and removes working copy locks that have not been removed by previous commands. This usually happens if a command stoped because of errors.

Commands cleanup

### Lock and Unlock Files

To lock working copy items in the repository so no one else can modify them select the items in the working copy view and run lock from the Wc menu.

In the same way use unlock from the Wc menu to unlock the items again.

Commands lock
Commands unlock

### View Differences between Repository URLs

Typically there are two scenarios for running a diff on a repository. First a diff between two different revision of the same URL. For example comparing the latest trunk with the trunk as it looked like a few revisions earlier. Second a diff between two different repository URLs. For example to view the differences between two tags.

#### Differences between two Revisions of the same Repository URL

To run a diff between two revision of a single repository URL select the corresponding repository item in the Project Folder View and select diff.. from the ReposFolder menu.

subcommander Diff Dialog

In the Diff Dialog you can set the two revision you like to diff. If you are done run Preview to show a list of the modifications between the two revisions. By double clicking an item from the Preview List you can run submerge to visually display the differences. Note that running submerge will only work on text files. By running Patch you will see a patch file of the differences.

The Text Status, Property Status and Folder/File columns show the type of modification and if an item is a folder or a file. The two status columns use the same codes as used in the Working Copy View. The Folder/File column contains an 'F' if the item is a folder and is empty if the item is a file.

You can also run the diff between two revision from the Log Dialog (). The advantage is that you don't have to enter the revisions manually. You simply select the two revision from the revision list and run diff.

#### Differences between two different Repository URLs

Running a diff between two URLs requires to select the two URLs. You can either run diff and then select the second URL from the diff dialog using browse Repository or you can select both URLs in the Project Folder View.

Select the first source URL normally by left clicking the repository item. To preselect the second source URL hold down the CTRL key and right-click the second repository item to open the context menu. Then select diff.. to open the diff dialog und run Preview to see the differences between the two URLs.

This is a bit unusal but the Project Folder View can't currently use the typical multi-select option because it interferes with the normal handling.

Commands diff

## The Log Dialog

The Log Dialog is important for a couple of different tasks. It is not only used to view the history of commits but also to view differences between committed revisions and for merging commits from a repository to a working copy.

subcommander Log Dialog

### View the History on a Working Copy

To view the history of your current working copy you need to open the Log Dialog. Select the working copy in the Project Folder View and choose log.. from the WcFolder menu.

In the Log Dialog you can control the range of revisions you like to see with the Start/Stop Revision controls. If you are only interested in the last 25 commits you can set the Limit to 25. Subcommander will display at most 25 commits in the given revision range. You can also disable the limit to get all revision in the given range. Press the Run button to retrieve the commit messages.

The default settings will show you the latest 50 commits on the selected working copy path: the start revision is head (the newest availabe revision) and the stop revision is 0 (the oldest possible commit). By having a limit of 50, subcommander will retrieve the latest 50 commits on the give path.

The commits are displayed in the Revision List. By selecting a revision its commit message is displayed in the Log Message editor and the files and folder modified in this revision are listed in the Changed Paths area. You can modifiy a commit message to fix some errors by editing the message. To overwrite the commit message in the repository press the Set Log Message button.

Note that the repository needs a pre-revprop-change hook that allows changing the commit messages.

Using the Find controls you can search through the retrieved log messages for the entered text. A found match gets highlighted in the Log Message editor. The Prev and Next buttons jump to the previous or next occurence.

History working copy

### View the History on a Repository

Viewing the history on a repository item works in the same way as for a working copy. Just open the log dialog on a repository item (ReposFolder menu) instead of a working copy item.

History repository

### View Differences between Revisions

#### Repository Differences

After selecting two entries in the Revision List you can view the difference between them by running diff from the context menu. The diff menu item is only enabled if you select exactly two items.

Subcommander will show the differences of a single file by running submerge. If you did open the Log Dialog on a folder and not just on a single file subcommander will show each file with differences one by one.

History diff repository

#### Working Copy Differences

Generally viewing the differences from a working copy Log Dialog works the same way as viewing them from a repository Log Dialog. The only difference is that you can also run diff on a single selected item from the Revision List. In this case subcommander will show the differences between the selected revision and your current working copy.

History diff working copy
History diff

### Merge into the Working Copy

A common merge scenario is that you need to merge a single or muliple changes or bug fixes from your development branch into your current release branch.

Subcommander makes this an easy task. Make the merge target working copy your current working copy and open the Log Dialog on the source repository url with the changes you want to merge.

Now simply select the revision from the Revision List and select merge from the menu or the context menu to merge the selected revision into your current working copy. Subcommander will open the Merge Dialog with source of merge, source revisions and target working copy filled up. Hit ok in the Merge Dialog and your done.

In the same way you can easily merge a range of revisions. Select the first and the last revision of the range you like to merge in the Revision List and run merge again. Subcommander will fill the Merge Dialog with the given revision range.

History merge

### Undo-ing a Commit from the Working Copy

From time to time it happens that one commits something wrong or broken to the repository. You can't revert the commit to the repository but you can do another commit that undos the comitted changes.

This works by reverse merging the wrong commit into your working copy and comitting the working copy again. Reverse merging means to switch the revisions used to merge. If your wrong commit was revision 10 (with 9 being the previous head revision) you tell subcommander to reverse merge the commit by specifying revision 10 as the from revision and revision 9 as the to revision.

To make this taks easier subcommander prefills the revisions in the correct reverse merge order if you choose undo instead of merge from the menu.

All other steps are the same as with merging.

History reverse merge
Commands diff log dialog

## The Log Graph Dialog

The Log Graph Dialog show the history of an item in a graphical view. It shows when an item or a copy (ie. a branch or a tag) of that item was modified and at which revision it was copied.

The graph is sorted by revision and by path. Sorted by revision means that the revisions are sorted from left to right by their revision number. Sorted by path means that commit revisions which modify an item in the same path are grouped together.

Groups use different colors depending on their distance to the original source path. In the screen shot the grey box (top left) is the group for the /trunk path. At revision r1464 a new branch (1.1.x) was created from /trunk. Since the branch has a differnt path we get a new group in a different color. Its distance to the original source (ie. /trunk) is 1. The tags created in revision r1475 and r1498 create two new groups (different paths) but in the same color since the distance to their original source (/trunk) is 2.

At the moment you can use the log graph only to view diffs between revision which is described in the next section.

To zoom in or out, move the mouse into the button area and use the mousewheel.

subcommander Log Graph Dialog

### View Differences between Revisions

To view the differences between two revisions simply select both revisions (use shift to select the second revision) and open the diff dialog by clicking on the diff button. This will open subcommanders normal diff dialog filled with the selected revisions and paths.

You can also select a group box which represents the head revision.

Graph History diff
Commands diff log graph dialog

## Configuration

Subcommander automatically uses the standard Subversion configuration settings like proxy settings or stored authentication information. Since Subcommander doesn't have a settings dialog to change this information you may need to edit the Subversion configuration.

subversion configuration files

On Windows the Subversion configuration files are at `%APPDATA%\Subversion\config`. `%APPDATA%` is typically something like `C:\Documents and Settings\<yourwindowslogin>\Application Data`.

On MacOSX and Linux the Subversion configuration files are in $HOME/.subversion.

### Proxy Configuration

To tell Subcommander to use a http proxy for access to a repository you need to configure the proxy information in subversions `servers` configuration file (see where you can find the `servers` file). The file contains some documentation how to add a proxy server.

Configuration proxy
log dialog
subcommander