Most forgotten feature

TortoiseSVN has many features. Most of the time, you won't need all the features it has but only a few, depending on the projects you work on. But there are some features which you would use if you only knew they were there.

Now you might say that if a feature is not obvious right away, and so hidden so that you don't even know it is there, then the UI should be improved to make that feature more obvious. And you are right.

But sometimes it is not possible to do that, or we simply don't know how.

This is one of those situations:

Right drag

In the Windows explorer, it is possible to move/copy files not only by dragging them with the left mouse button, but also with the right mouse button. The difference is that the left-drag executes the operation immediately, and the right-drag will first show you a context menu where you can choose the operation.

TortoiseSVN adds some of its commands to that right-drag context menu. The screenshot below shows the menu when you drag unversioned files/folders on to a versioned folder:

The right-drag context menu when dragging unversioned items onto a versioned folder

As you can see in the screenshot, TortoiseSVN allows you to add the files/folders to the working copy. This first moves or copies the files to the working copy, then does an "SVN Add".

The entry "Apply patch" only shows up if you drag a *.patch or *.diff file onto a working copy. That command will open up TortoiseMerge, allowing you to apply the patchfile to that working copy location.

Next is the context menu you will see if you right-drag versioned files/folders from your working copy to an unversioned folder:

The right-drag context menu when dragging versioned items onto an unversioned folder

These commands let you export your items:

  • SVN Export to here: exports the dragged files/folders to the target location, i.e. creates a copy without the .svn folders
  • SVN Export all to here: exports the dragged files/folders to the target location, including unversioned files.

And last but not least, the commands you get when you right-drag files/folders inside your working copy:

The right-drag context menu when dragging versioned items inside a working copy

These commands help you move and copy your files and folders around in your working copy:

  • SVN Move versioned files here: moves the files to the drop location. If a file already exists, it will ask you what to do (rename the file, overwrite it or cancel).
  • SVN Move and rename versioned files here: the same as 'SVN Move versioned files here', except that it will ask for a new name for every dropped file.
  • SVN Copy versioned files here: the same as 'SVN Move versioned files here' but it leaves the original file, i.e. the file is copied not moved
  • SVN Copy and rename versioned files here: the same as 'SVN Move and rename versioned files here' but it leaves the original file, i.e. the files are copied not moved

Now what are these features really good for? Well, you will know as soon as you start using them :)
Seriously: these commands are really useful if you want to reorganize your working copy, move and copy files around or if you simply want to export your working copy to another folder.

update

After reading the comments below, I think you guys just don't get it or haven't read the article in full. I clearly state that sometimes it's not possible or we don't know how to make a feature more obvious.


Simply 'putting the command in the context menu' isn't going to work. You can't move multiple files from there.
So please, either suggest something that really could work (and works as good as the right-drag). Otherwise you're not helping. Oh, and try to think first, your suggestion should be reasonable. I've actually had someone sent me a mail suggesting to start a video on the first startup of TSVN explaining the right-drag feature.

Comments

right click drag and drop

Hi Steve,

Right-click drag and drop is really a great feature. In fact, I find that, in general, TortoiseSVN has incredible usability and it seems obvious to me that the developer team really thinks about use cases and the users' work-flow.

I figured that I would let you know that I have a blog, Thinking in G, where I sometimes write articles about TortoiseSVN (see TortoiseSVN category). In fact, I recently wrote an article called "TortoiseSVN Right-Click Drag and Drop". :-)

Cheers,

-Jim Kring


Hi, I just discovered this

Hi,

I just discovered this the other day and I must say it is refreshing. Is there some technical limitation preventing you from implementing this using left-click + drag?

Keep up the good work, we are very proud of this open source project.


Why not left-drag

There are several reasons why this isn't done with left-drag:

  • Users expect that left-drags work the way they are used to and that should not change. It would confuse most users if a left-drag would suddenly do something they don't expect.
  • Sometimes it is necessary to move/copy files without using the Subversion commands. By replacint the left-drag, we would prevent users from doing that and they would have to use some other tool to do that.
  • The shell doesn't have any way to hook into those drag handlers and change/replace them. Which means even if we wanted to do that, we simply couldn't.

It should be in the normal menus too

Dear Steven,

Thanks for your support and explanation - it seemed amazing that it should not be possible and I don't suppose I shall forget it again. The place seems logical enough once you know about it.

However, I still reckon it needs to be in the context menu and the File.TortoiseSVN menu.
The reasons I say that are:

  • so many users do overlook it.
  • right-drag in MSW is little known (perhaps too little, but there it is).
  • I find the UI gets one into the habit of doing everything with the context menu.
  • I believe every function should be available via the menu bar.

I can see that you don't want to clutter up the menus, so perhaps you could replace "Rename.." with a "Move/Copy...". By all means add a tip about right-drag somewhere. What I cannot see is that "it is not possible to do that, or we simply don't know how".

Moreover (to drift only slightly off-topic), it would be really useful, once you are into the "new name" dialog, to have two new possibilities:

  • Browsing for a target directory (which had obviously better be within the WC)
  • Apply a systematic change to all names, e.g. "*.txt" -> "*.back.txt". There may be usability issues, but it remains far preferrable to messing around with the DOS :sick: and SVN ;) command-lines, usually not even having sed to help.

I can only second the

I can only second the previous comment. I discovered the right-drag feature just by accident, when I was moving my files. I use right-dragging maybe once in a year :-)
And yes, I totally rely on the context menu and feel I should be able to access everything important from it.

-Matthias


Yet another experience

I'll make myself publicly look like a fool, but I'd like to let you know that after looking for this feature all over the interface and IIRC in the manual, I ended up moving the files individually in the repository, thus commiting 60 revisions, one for each file moved.

And this was with 2 years of SVN & TortoiseSVN experience, where I'd set up a repo, branched, merged, patched, etc. Meaning, I'm by no means an expert but what MS would call a "power user". And I looked quite hard and couldn't find this feature.

Of course a while after that I looked hard enough and found this page and a page on the manual, but anyway. I don't think RTFM is proper answer for a feature as trivial as Move. I assume you've argued about this already on the dev list, just wanted "add my vote" for this.


Documentation improved for 1.5.0

Before anyone else chimes in here, the documentation for moving and copying items has been re-written for 1.5.0, and right drag is explicitly mentioned there. You won't see it on the stable branch, but it is in the nightly build.


You should not /need/ the documentation

It is good that the documentation has been improved
...but...
you should not need the documentation to find functions (especially as basic as this) of a GUI application.
So every function should be in the menu's.
I fear that this feature will be a millstone round your necks until you do that!


The menus should have all commands

To emphasis on the point that every command should be in the menus. I don't use Windows Explorer. I rely on another window manager (bbLean) so to move a file I must start Windows Explorer move the files and kill the process.


What about repo-browser?

I'm often tempted to do branch/tag management from repo-browser to avoid the overhead of checking out a working copy. But right-drag in repo-browser doesn't give me the option of copying instead of moving. Can this feature be added to repo-browser also?


explorer

Just do the same as you would do in the explorer: hold down the ctrl key while you drag the directory. That will create a copy - without the ctrl key down, it will do a move.


hmmm. I find that I have to

hmmm. I find that I have to hold down control and right-drag. The control key does not modify the left-drag operation (it still moves). It would be more intuitive for users of explorer if ctrl-left-drag worked, and/or right-drag brought up the context menu.


Please react & explain

Dear Steve,

Do you think you could react to the suggestion that Move/Copy be added to the File and context menus?
And, please, if you feel it should not be, explain and answer our arguments above?
Or, if you accept the idea in principle, say when you might be likely to have time to do it?

Sorry to pester you, but it does seem important to me, and I don't see a problem!

regards,
Patrick Traill.


changed

We once had the context menu entry for "rename" called "move/rename". People kept complaining that they only want to have "rename", because otherwise they'd have to always enter the full path (you can't move a file by just showing the name and not change the full path).
So we changed it to the way it is now.

apart from that: if you have additional suggestions on how to implement something like this, I recommend you join our mailing list. The comment system on our website isn't really suited for discussions.


Thanks

Thanks for your reply - I shall probably check out the mailing list (in time).


I'd just like to add one

I'd just like to add one observation: y'all see those last 4 entries (copy, move, create shortcut, cancel)? Those are Explorer's standard right-drag menu entries for folders. I right-dragged quite a bit even before knowing Tortoise had this feature (because the copy/paste never felt right to me for working with files), and was like "that's pretty freaking cool!" when i right-dragged into (or was it out of?) a working copy one day and got all these spiffy new options. :)

IMO, this was about the best place those options could have been. They fit in well with the options Explorer already provides.


Very nice feature as it is.

Hi,

I used TSVN for the first time at my new work place.. and today I installed it on my home computer - I think it's very nice, especially the integration with the context menu.

After I installed it I wanted to learn about its basic usage, and basic terminology, etc. Since I really didn't know any thing about version control *any thing*. So I spent the night searching for some tutorials and guides to using TSVN. One of those guides is the manual. I browsed through it, read chapters 1, 2, and many parts from chapter 5. I came across the right-drag doc's quite easily and quickly.. they are explained very nicely too..

Some other people said that the right-drag context menu should be more noticeable.. I can't say that I agree. All you need to do is skim through the official TSVN manual (chapter 5 probably) and you will find details on the right-drag menu - That's all there is to it.

I think it is fine how it is.

So for all the people complaining that it should be more obvious.. Take the 10 minutes to search the manual.. it's not that hard. Or, since you're reading this.. you learnt from the blog post.. Well any way.. now you know about it.. Put it to good use ;)

Thanks and goodbye. :)


Exactly

I fully agree with Shaun.

I think if you start working with a tool as capable and complicated as svn and its client application, then you should just read through the manual once, so that in a corner of your mind be planted little alarms, like 'oh, this topic is tricky, there was something in the manual about this' and 'yeah it can do it, they wrote about it somewhere', and also to make sure that the tool is built around the same concepts that you think every such tool should be (and sometimes they aren't exactly 8-).

Then start working and look up the tricky parts and things you don't remember later in TFM.

I also agree with anyone who thinks the right drag feature should be hihglighted in the manual, and if it earlier wasn't, then it was a serious documentation bug. But we all know it is now included, so further discussion in this regard is pointless 8-)

I understand the technical arguments all right, and I think the tool is great as it is, but perhaps it would be possible to add the 'move and rename' and 'copy and rename' items to the context menu, but when activated, these would bring up a nice message box: "This operation is available as a right-drag option. RTFM :)" and everyone would be HAPPY!


Link manual from contextual menu?

Hello,

I observed it is quite common that users don't notice the right-click-drag feature of TortoiseSVN. Best-case, they ask around "how do you move/copy". Usually, they simply don't know it's possible. No user I know has ever opened the manual.

I don't have a proposal for a better User Interface, but maybe, you should add an entry in the contextual menu, named "Move/Copy" that pops up the relevant section of the manual. That would be the surest way to help users notice the feature.

Cheers,


"moves or copies"

You said:
As you can see in the screenshot, TortoiseSVN allows you to add the files/folders to the working copy. This first moves or copies the files to the working copy, then does an "SVN Add".
I must be missing something obvious, but when you say the option SVN Add files to this WC "moves or copies", how do I know whether it will MOVE files or COPY files?

THANK YOU for your efforts on this EXCELLENT tool.


better wording

You're right. There's no way from the menu text to find out whether the files are moved and added or copied and added. I'll change the text to "SVN Copy and add files to this WC" - that should make it clear.


Better wording

For me, I've not used the right-drag features simply because I can never remember what the wording of the options means, and when I went to the documentation, it really didn't clarify that. It was just treating them as if they were obvious, and they are not as this thread proves. My main peoblem is that I never found an explanation other than this thread of the difference between "SVN to here" and "SVN all to here". "All" does not have an obvious meaning to me at least in this context, and I would avoid it because I'd have to go digging through the Web to find out since the documentation didn't say. Also, I think all those right-drag items should be in an SVN submenu to not clutter the menu and to not create confusion or to be accidentally clicked on when I was just trying to do a normal move or copy.


More forgotten features

Actually I discovered the right-drag menu options straight away. Now I'm disappointed - are there any more "forgotten features" for me?

One that I find really useful is the ability to select multiple projects (ie, WC folders in Windows Explorer), right-click and select "SVN Update" to update them all at once. This is very useful when you have dozens of WCs on various projects. Another I didn't discover for a while is that you can double-click a file in the Commit (Enter Log Message) dialog to compare with its base version.

Perhaps you could add a brief "Tip of the Day" message to the Update and/or Log Messages dialogs. I often sit blankly for many seconds (even minutes) as operations are completing in these dialogs. Clicking on a "More Info" button could take you to the relevant help page.


tip of the day

now THAT's a great idea.
while i'm staring at that white window waiting to see whether anyone's done a commit since i was here last, i could learn something!


how about adding paste special menu item

How about adding a "paste special" item to the context menu so that you could copy or cut the files you want to move, go to the location you want to move them to, right click and select paste special to bring up the svn choices