views:

154

answers:

8

I have been struggling with Subversion for some time, thinking it was beginners problems that would go over. Though today I have been thinking through it, and realize that the problem is the way it is embedded with the client files, and that you work on the server db through these embedded files.

So I wonder if:

  1. Is it perhaps just as easy to work directly towards the repository, but that the commands are "more hidden" (not mentioned in popular books)?
  2. Are the any GUI clients that can work without these embedded files.(16Feb: Using Subversion in a way that would difficult or hard to figure out otherwise)
  3. Are there perhaps any relatives of Subversion that is "better" in this respect?

Before I used the VSS client GUI application, and it was much easier (though I do want to move on to something more modern). To take an example I have a Drupal installation where most of the files are third party files that I need to keep track of. To get started I needed to check everything in and then out. Most changes are new versions from the Drupal project. (I know there are scripts to handle third party code, but I still think it must be cumbersome, especially when this code is spread in several directories).

Another thing I often has done in the past is to have the same source files in several VSS databases. (16feb:Which would be difficult in Subversion because the embedded .svn directories refers to one directory)

*13 Feb * Seems some people don't quite understand, so: The main problem is if you do a lot of changes without using the svn commands, especially when you replace directories as when you replace 3d party code, since then you loose the .svn directories.

If you plan ahead you can use svn_load_dirs.pl as described in http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html Though what I want is to be able o do arbitrary things with my files, and then diff and commit towards the repository. I can't see how to do this with tortoise or svn commands.

16Feb: Another problem that I think many people are running into when they start with Subversion is if you don't want to do the "initial checkout" - say you want to do changes on a production site.

A: 

Have you tried git?

Tobias Cohen
no (why do answers have to be 15 characters?)
Olav
to prevent spam
Valentin Rocher
@Bishiboosh: How so? Is everything less than 15 chars automatically spam while everything above is valuable?
sbi
no, but in case of robot attack, it slows greatly the robots if they have to type 15 chars instead of one, and gives more time to the admin to prevent this kind of attacks
Valentin Rocher
@Bishiboosh: Are you trying to be funny?
sbi
This guy really doesn't need a (superior but) more complicated VCS right now...
calmh
@calmh, if he's having problems with his current one, then maybe he does. I know for a fact that features like submodules which are not available in Subversion would be helpful here.
Tobias Cohen
A: 

I am not completely sure that I understand your question, but if it is client gui tools for Subversion you need, have a look at Tortoise Svn http://tortoisesvn.tigris.org/

Luhmann
As far as i can see you can't for example do a diff or check in (commit) without having those .svn directories.
Olav
Can you elaborate why the .svn directories are causing you problems?
Luhmann
The main problem is if you replace directory subtrees, this is often called "vendor branch" http://drupal.org/node/679650,http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html(Its the "scripts to handle third party code" in the question).
Olav
I have a checked-out copy of my vendor branch - when a new update is released, I just copy the files over. It doesn't delete the .svn files, just copying those that have changed. Every few versions I scrap the lot and import the latest version again to ensure files that have been deleted from the vendor are deleted in my copy.
Andy Shellam
If I don't need to make changes to the source code (which is true for 95% of my vendor libraries) then with every new version I just do a straight import into /tags/vendor-lib-1.0.0, replacing 1.0.0 with the actual version number, then the app that needs it can reference the correct tag in an svn:external definition. I don't even need a separate checkout then so you don't have to worry about .svn folders.
Andy Shellam
A: 

SVN is a different beast in the sense how working copy relates to the 'server'. Here is how I would group some revision systems in this perspective in order of reliance on the 'server':

  1. TFS, Perforce
  2. SVN, CVS
  3. Mercurial, Git
Maxwell Troy Milton King
+2  A: 

I've used CVS for a while, tired of it and wanted something better. I've started to use SVN but then discovered Bazaar. It's the best tool for both beginners and advanced users with both great GUI and command line. It supports many different workflows and you can use it with or without a server, alone or in a command. It's fast, cross platform, integrates with launchpad code hosting, supports subversion repositories and tons of other features and plugins. It's used by Ubuntu, MySQL, Emacs and many others. Bazaar is a free and open source software by Canonical, and a part of the GNU Project. For more details see "Why Switch to Bazaar?" and Bazaar home page.

Ilia K.
From http://fourkitchens.com/blog/2009/01/17/quick-dirty-version-control it seems to be "better" (only .svn type embedded files in the root directory).But I would guess you can't work that way towards a Subveersion repository (I want to stick to Subversion or something very close in case I will work with others in the future)
Olav
In particular, if you are forced by circumstances to use SVN, Bazaar can be used as a great SVN client!
clacke
+1  A: 

SVN consists of two parts:

  • the repository - server's side
  • the working copy - part of repository copied to your local machine

Part of svn operations are server side operations, others are operating on working copy. Normally, server side commands operate repository's URL and local (working copy) commands take a local path as an argument.

You don't mandatory need a working copy, to perform server side operations, as: - browse repository - view log history - preview individual files or folders - diff branches - preview properties - etc.

you can use either svn command line client or any SVN GUI client - Tortoise Svn http://tortoisesvn.tigris.org/ is the most popular one for Windows - to perform both server side and client side operations.

given your repository URL is http://yoursvnserver/repo, the commands would look like:

Moisei
A: 

Seems using the --force option with add can resolve most issues.

If .svn files are lost I think the best solution is to put them back (from the repository for example), but I haven't found discussion on or script-support for this technique.

Olav
+1  A: 

If you try to do these 'arbitrary things' from Visual Studio you could use AnkhSVN (VS integration like VSS) or VisualSVN (Uses TortoiseSVN for most repository operation and adds its own features in VS on top of that).

See AnkhSVN vs VisualSVN and AnkhSVN versus VisualSVN. (Looks like a duplicate answer to me)

Added later Which would you rather use: VisualSVN or AnkhSVN?.

Bert Huijben
Then it wouldn't be arbitrary :-)
Olav
+1  A: 

I would recommend using Git, Bazaar, or another VCS which doesn't require you to tell it when you move sources around. I know Git best, so I'll say regarding it that you don't need to tell it when you've moved files and you don't need to maintain VCS-specific directories in each of your own directory. There are lots of complicated things you can do, but you don't have to expose yourself to the complicated bits :).

Andrew Aylett