Tag Archive for 'SVN'

Page 2 of 25

Backing Up Your SmartSVN Data

No matter how experienced you are with Apache Subversion, accidents and unavoidable occurrences happen, so it’s important to make repository data backups. If you’re using SmartSVN, the cross-platform graphical client for Subversion, the built-in ‘Export Backup’ functionality makes it quick and easy to create a backup of a selected file/directory.

To backup your data in SmartSVN:

1) Highlight the file(s)/directory to backup, and select the ‘Export’ option from SmartSVN’s ‘Query’ menu.

2) In the subsequent ‘Export Backup’ dialog, you’ll be presented with several options:

  • ‘Relative To’ – the common root of all files to be exported

  • Into zip-file/Into directory – select how you want to export your data. In both cases, you must specify the location where the backup will be created

  • Include Ignored Files – files marked as ‘ignored’ will not be included in the backup

  • Include Ignored Directories – note, this option includes all the items in the ignored directories

  • Wipe directory before copying – wipe the selected directory before performing your backup

export backup

Depending on the selection of files or directories, the ‘Export’ option will either display the number of files being exported or a ‘All files and directories’ message.

3) Once you are satisfied with the information you have entered, click ‘Export’ to create your backup.

Want more free Subversion training? We offer plenty of webinar replays available on-demand, or you can sign up for our upcoming webinars.

Subversion Tip of the Week

Apache Subversion supports the creation and use of ‘patches’ – text files containing the differences between two files. Patches specify which lines have been removed, added and changed, and are particularly useful when you don’t have write access to a repository. In these instances, you can create a patch file showing the changes between a file as it exists in the repository, and the version in your working copy. Then, you can create a ticket and attach your patch file for someone with repository write access to review and commit the accepted changes to the repository.

To create a patch file, you first need to review the differences between the specific files/revisions you are targeting using the ‘svn diff’ command. In this example, we are examining the differences between the version of the project in our working copy and the central repository.

tip of the week

If you’re satisfied with the differences ‘svn diff’ has identified, run the following command to create a patch:

svn diff > patch_name.diff

tip of the week 2

All the changes will now be written to a patch on your local machine.

tip of the week 3

You can now send this patch to a user who does have write access to the repository.

Creating a Patch Between Revisions

Alternatively, if you want to create a patch containing the differences between two revisions, run the following command:

svn diff r:(revision)(revision) (working-copy-location)

Followed by:

svn diff > patch_name.diff

Again, this patch file can now be submitted to someone with write access.

Want more advice on your Apache Subversion installation? We have a full series of SVN refcards for free download, covering hot topics such as branching and merging, and best practices. You can find out more at www.wandisco.com/svnref

What’s New in SmartSVN 7.5.4?

The latest release of SmartSVN, the cross-platform graphical client for Apache Subversion, features plenty of improvements you will find useful. In this post, we take a closer look at some of the functionality we’ve added to SmartSVN 7.5.4.

–ignore-ancestry

SmartSVN’s ‘switch’ option allows users to update a working copy to a different URL. This is particularly useful when you need to update your working copy to mirror a newly created branch. SmartSVN 7.5.4 adds support for the –ignore-ancestry option, which forces SmartSVN to switch to a URL even when it cannot find a common ancestor for the URL and your working copy.

JIRA Fixes

SmartSVN supports the popular JIRA issue tracker through its ‘Bugtraq’ properties option, allowing users to seamlessly integrate JIRA into the commit wizard and other modules. SmartSVN 7.5.4 fixes an internal error that could close the ‘Resolve’ dialogue, ensuring that SmartSVN’s JIRA integration continues to run smoothly.

Shell Integration Updates

In addition to being available as a standalone program, SmartSVN integrates with Windows Explorer and Mac OS X Finder, giving you the freedom to work the way you want. SmartSVN 7.5.4 includes fixes and new functionality for this integration, including:

  • Settings for shell integration are now stored

  • A fix for an internal error that could occur when working with root-level working copies (Windows)

  • A fix for a bug that could cause commands to be erroneously enabled (Windows)

Transactions

The Transactions view automatically provides information about new project revisions, ensuring users are kept up-to-date with changes being committed to the repository. If you’re using SmartSVN Professional, this Transactions window can watch for commits in any repository, keeping you informed on changes in the libraries being used by your project, or about the Subversion-related activities of your entire team.

transactions

SmartSVN 7.5.4 addresses a bug that could cause the ‘Copy Revision Number’ command to copy multiple items.

Additional Fixes

SmartSVN 7.5.4 also includes fixes for:

  • An internal error in the Merge Preview

  • An error in the SmartSVN Log that could occur when loading merged revisions

  • The “smartsvn.defaultConnectionLogging” system property failing to work

  • Trac plugin failing when querying Trac ticket db

More information on what’s new and noteworthy in this release is available at the Changelog.

Haven’t started with SmartSVN? You can claim a free trial of SmartSVN Professional 7.5.4 now.

 

Resolving Conflicts in Subversion

When you’re committing changes to Apache Subversion’s central repository, you may occasionally encounter a conflict which will cause your commit to fail.

resolving conflict

You’ll be unable to commit any changes to the repository until you’ve resolved all the conflicts. The good news is that Apache Subversion has all the functionality needed to quickly resolve whatever conflicts you may encounter.

1) Perform an Update

It’s possible that the changes you’ve made and the changes that have already been committed affect different parts of the conflicted file. Therefore, the first step is to perform an svn update:

svn update (path)

Subversion will then try and merge the changes from the server into your working copy, without overriding any of your local changes. If the changes affect different areas of the file, the server will merge the changes and you’ll be able to perform your commit. However, if you’ve modified the same sections of the file (e.g the same lines in a text file), Subversion will be unable to automatically merge the changes and the command line window will present you with several options to resolve the conflict:

  • (p) postpone – marks the conflict to be resolved later.

  • (df) diff-full – displays the differences between the HEAD revision and the conflicted file.

  • (e) edit – opens the conflicted file in an editor (this is set in the EDITOR environment variable)

  • (mc) mine-conflict – discards changes from the server that conflict with your local changes; all non-conflicting changes are accepted

  • (tc) theirs-conflict – discards local changes that conflict with changes from the server; all non-conflicting local changes are preserved

  • (s) show all options – displays additional options

resolving conflict 2

Enter ‘s’ to be presented with some additional options:

avoiding conflicts 3

Once you’ve resolved the conflict, perform an ‘svn commit’ to send your changes to the repository.

Looking for an easy-to-use cross platform Subversion client? Claim your free 30 day trial of SmartSVN Professional by visiting: www.smartsvn.com/download

Reviewing Changes with Subversion’s ‘SVN Diff’

Sometimes you need to review the differences between files and revisions, for example before you commit your changes to the repository or when you’re trying to pinpoint the revision you need to revert to. This is when Apache Subversion’s ‘svn diff’ command comes in handy, allowing you to see the differences between files and revisions by printing a line-by-line breakdown of human-readable files. This helps by showing you exactly what has changed in the specified file, at the specified revision. The results include lines prefixed by a character representing the nature of the change:

  • + Line was added

  • – Line was deleted

  • A blank space represents no change

The ‘svn diff’ command can be used to perform several different tasks:

  • View Local Modifications

When ‘svn diff’ is performed on a working copy, it prints line-by-line information on all local modifications:

svn diff (working-copy-path)

svn diff

  • Compare Different Revisions

To use the ‘svn diff’ command to compare different revisions of the same file, use the ‘-r’ switch:

svn diff -r(number):(number) (working-copy-path)/filename

svn diff 2

This command also works at the repository level.

svn diff 3

Additional Options

  • –notice-ancestry

By default ‘svn diff’ ignores the ancestry of file(s), but you can force Subversion to take ancestry into consideration by adding the –notice-ancestry switch.

  • –show-copies-as-adds

By default, ‘svn diff’ displays the content difference for a file created by a copy command, as a delta against the original file. Adding this switch forces Subversion to display the copied content as though it’s a brand new file.

 

Subversion Tip of the Week

SVN Revert

Apache Subversion’s ‘svn revert’ command allows you to discard local changes on a file or directory and replace it with the version in the repository. This saves you the overhead of performing a fresh checkout, and is also helpful when you need to quickly resolve a conflict.

To revert the changes on a single file, run the ‘svn revert’ command followed by the file path:

svn revert (working-copy)/filename

svn revert

It’s also possible to revert all the changes within an entire directory using the –depth=infinity switch. When this switch is added, any files that have been changed within the specified directory are replaced with their repository equivalent:

svn revert –depth=infinity (working-copy)

svn revert infinity

Useful Additional Commands

  • svn status

Before discarding your local changes, you may want to review exactly which files have been altered at the working copy level by using the ‘svn status’ command:

svn status (working-copy-path)

svn status

  • svn diff

The ‘svn diff’ command prints all the changes that have been made to human-readable files within the working copy, which is useful for identifying the file(s) you want to revert. Each line is prefixed by a character representing the nature of the change:

  1. + Line was added
  2. – Line was deleted
  3. A blank space represents no change

To run ‘svn diff’ enter the following command:

svn diff (working-copy-path)

svn diff

Looking for an easy-to-use cross platform Subversion client? Claim your free 30 day trial of SmartSVN Professional by visiting: www.smartsvn.com/download

 

 

Switch your Subversion Working Copy

Apache Subversion’s ‘svn switch’ command allows users to update a working copy to a different URL. This is useful when you need to update your working copy to mirror a newly-created branch.

Although it’s possible to achieve the same effect by performing a fresh checkout, the ‘svn switch’ command is a quicker alternative. It saves you the overhead of running ‘svn checkout,’ and applies the changes required to bring your working copy inline with the new location, making it a very efficient command. It also preserves any changes you’ve made in the working copy.

To perform a switch, run ‘svn switch’ followed by the URL path you wish to mirror. Apache Subversion will then go ahead and update your working copy.

svn switch

Additional Options

There are some additional options you can apply to fine-tune the ‘svn switch’ command:

  • Ignore Ancestry

If Subversion cannot find a common ancestor for the URL and your working copy, it will block the operation and display an error message.

svn switch 2

It is possible to force Subversion to switch to this URL anyway, by adding the –ignore-ancestry option.

svn switch (target-URL) –ignore-ancestry

svn switch 3

  • Target a Particular Revision


You can also specify a particular revision of the URL you’re switching to. Note that Subversion defaults to the HEAD revision, if no alternate revision is specified:

svn switch -r(revision-number) (target-URL)

svn switch 4

Want more free Subversion training? We offer plenty of webinar replays available on-demand, or you can sign up for our upcoming webinars.

Subversion’s SVN Annotate Command

Apache Subversion’s ‘svn annotate’ command allows users to view a line-by-line breakdown of all the changes that have been applied to a human-readable file in your working copy. This information is printed alongside details on:

  • The person responsible for each change
  • The revision number where each change occurred

Note that this line-by-line attribution is based on the file as it currently appears within the working copy.

To run ‘svn annotate’ on a file, enter:

svn annotate (working-copy-location)/file-being-examined

In this example, we’re examining all the changes for the ‘Changelog’ file, which is located inside the trunk of our working copy.

svn annotate

If you need a more comprehensive printout, the -verbose (-v) switch adds the full datestamp to each line.

svn annotate 2

The –force Switch

The ‘svn annotate’ command uses Multipurpose Internet Mail Extensions (MIME) types to automatically detect whether a file is human-readable. By default, ‘svn annotate’ will block any file that’s non human-readable. If you attempt to perform an ‘svn annotate’ on a file that Subversion judges not to be readable, you’ll get an error message.

svn annotate 3

If you want to go ahead regardless, you can add the –force switch. Of course, this may result in a screen full of strange symbols if the file truly is non human-readable!

svn annotate 4

Not yet started with SmartSVN, the easy-to-use graphical client from Subversion? Get your free 30 day trial at www.smartsvn.com/download

Is Subversion Ready for the Enterprise?

At WANdisco, we firmly believe that Apache Subversion is a commercial quality version control system ready for the enterprise. With everything that Subversion has to offer enterprise users, it’s easy to see why it’s becoming such a popular choice:

  • It’s open source – cost is one of the most commonly-cited reasons for adopting open source solutions such as Subversion, but there are many other benefits. Most notably, open source projects tend to be collaborative efforts between many developers, so users reap the benefit of a team of developers, all with their own particular skills and areas of expertise.
  • It’s an established project – accepted into the Apache Incubator in 2009 and graduating a year later, today Subversion is an Apache Top Level Project maintained by a global community of contributors.
  • It’s the center of a vibrant ecosystem – Apache Subversion users have access to countless additional client tools, GUIs and plugins. Subversion also integrates with most of the major IDEs, including Eclipse and Microsoft Visual Studio.
  • Free community support – another benefit of utilizing open source technology is the transparent, archived communication that makes up an open source project’s mailing lists and forums, including Subversion’s dedicated SVNForum. This communication can be an invaluable source of information for users, and in many instances, a question will have already been asked – and answered – by someone else. If you can’t find the answer you were looking for, ask the community directly. There’s also no shortage of free training resources available online, including webinars, refcards and tutorials.
  • Professional support option – Subversion has an extensive community of users who are always willing to answer queries, but mailing lists and forums aren’t always the ideal place to reach out to when disaster strikes your enterprise deployment. As a long-established open source solution, there are professional support options available for Apache Subversion.

Our professional support services for Subversion includes:

  1. 24-by-7 worldwide coverage
  2. Guaranteed response times
  3. Indemnification coverage
  4. Subversion system health check
  5. 8 hours of free consulting or training

Enterprise training is another option for users who need additional support with their Subversion installation.

Despite all the benefits, there are some potential issues to consider when working with large Subversion deployments. If you’re using multiple SVN repositories across globally distributed teams, you may encounter the following challenges:

  • Loss of productivity when the central server fails and users at remote sites cannot access the latest version of your project.
  • Slow networks encourage developers at remote sites to checkout and/or commit infrequently. This increases the chances of encountering time-consuming conflicts.
  • Unnecessary read operations taking place over the WAN, as users at remote sites repeatedly perform read operations to access the same files. This degrades the performance of both the central Subversion server and the network.
  • Every remote request entails a WAN penalty. Although Subversion clients only send changes to the central server when modifications to existing source code files are committed, when a new file is committed or an existing file is checked out, the entire file is sent over the WAN.
  • When Subversion is implemented with an Apache Web Server as a front-end, and the WebDAV HTTP protocol is used, the WAN penalty can be significant. This is particularly true of commits that consist of a large number of files.

To help enterprises overcome these challenges, we’ve just announced an ongoing series of free webinars. Over the course of each hour-long ‘Scaling Subversion for the Enterprise’ session, our expert Solution Architect Patrick Burma will cover all the issues enterprises can encounter when using multiple Subversion repositories across globally distributed teams. He will also discuss the accompanying solutions from the administrative, business and IT perspectives, and will be available to answer specific questions.

You can register for all of this week’s sessions now:

Subversion Tip of the Week

Using SVN Move

Apache Subversion’s ‘svn move’ command allows the user to move files and directories and can be applied to both the working copy and the repository. The key difference between this command and ‘svn copy,’ is that ‘svn move’ also deletes the original file. This makes running ‘svn move’ equivalent to performing an ‘svn copy’ followed by ‘svn delete.’

…in the Working Copy

Running this command at the working copy level requires you to specify the file you’re moving and the location you’re moving it to:

svn move (working-copy-path)/item-being-moved (working-copy-path)/new-location

In this example we’re moving the ‘Release2’ item to the ‘Releases’ directory.

svn move

Note, you’ll need to perform a commit to send this change to the repository and share it with the rest of your team.

…in the Repository

It’s also possible to move items inside the repository. As this creates a new revision, you’ll need to supply a log message alongside the command:

svn move (repository-URL)/item-being-moved -m “log message” (repository-URL)/new-location

In this example we’re moving the item ‘Release’ to the ‘Releases’ directory.

svn move 2

Looking for an easy-to-use cross platform Subversion client? Claim your free 30 day trial of SmartSVN Professional by visiting: www.smartsvn.com/download