We have a situation where a large number of .NET developers use Team Foundation Server 2010 for source control, and a small number of iOS developers (on Mac OS X, obviously) use Subversion.
In the hope of unifying these two systems, we have looked at using SvnBridge on the TFS server to allow SVN clients to connect to it.
Our initial tests (using TortoiseSVN on Windows) showed this working just fine.
However, the Mac users have not had much luck, trying a couple of different SVN clients.
Using the Versions SVN client, they are able to view the repository, check out, and check in; however, when viewing history, it does not show the name of user who committed a changeset, nor the comment attached to that changeset.
Using the Cornerstone SVN client, they could not even get the timeline to display, it just sat and span forever.
They do not wish to use Xcode's built-in SVN support as it is "crap" (their words, not mine).
Has anyone successfully used Versions or Cornerstone with SvnBridge? Did you encounter the issues I describe, and if so, how did you overcome them?
Or can anyone point me towards another Mac SVN client which they have used successfully with SvnBridge to TFS?
I have personally had this work as expected using the OS X native SVN cli ( command line interface ).
I don't use SVN GUI's, but I would envision that these clients ( Versions or Cornerstone ), and possible expected output they might be parsing for might more be the issue.
Related
I'm new to SVN so please be patient with my (maybe weird) question.
I have been working on a project with SVN on Windows 7 using Tortoise and WAMP for developing on my local machine.
As all the project is inside my Dropbox folder I'm wondering if there's a way to work on this even on my mac laptop with OSX Lion when I'm away from home (using xCode or whatever) and maintain consistency on both systems.
I read on the web about syncing xcode project with dropbox on several macs, but can it be done between windows and osx?
The idea with SVN is that you have a host where you push your code to. This host runs an svn server which manages your code and is able to distribute the code to multiple clients and accept changes from these clients. So if you have an SVN server somewhere, you don't need to use DropBox at all - just checkout your code from the server on your Mac and you can work on it and push changes to your server. On your Windows system, you can then just update your copy and get the latest changes that you pushed from your Mac.
If, however, you are using a local SVN server which stores your repository in your dropbox folder, things are a bit different. First thing to say: I would never do that. Second thing: You'd have to configure an SVN server on your OSX system to use the repository in your Dropbox folder the same way the server you configured on your Windows system does. If I ever needed to use a setup like that, I would never use SVN for it. A decentralized version control system like git or Mercurial is much better suited to handle this setup, because you don't need to have a server running - you can just sync between the DropBox folder and your local copy.
Why not use git? If you're new, don't bother learning something that's obsolete.
Be aware that different IDEs (XCode on OSX vs. whatever you're using on Win7) may mangle your line endings everytime you save from that computer.
Git has decent support for this sort of problem:
What's the best CRLF (carriage return, line feed) handling strategy with Git?
Finally, I'm not sure how you expect to "share" the project between two different build systems.
If you have a Makefile for your Windows build, you can make it a cross-platform one. See this:
makefile custom functions
I'm currently a single developer working with the following.
Mac for all computing / code requirements
Eclipse / Dreamweaver for code editing
Windows Server 2008, CF8 IIS for my dev server
Currently when I develop all my apps, I'm starting to find that I'm really in need of an VCS to manage the code as I'm playing that fun game of simply renaming files with v1, v2 etc but this is becoming a nightmare when I start work the next week as you can probably imagine.
My issue is, I'm not sure where to start, what VCS should I use as I would like to store everything on my local network and as my code writing machine is a Mac, and my dev server is a windows machine I'm not sure what products should I look at for an VCS.
If anyone out there is in a similar position i would love to hear how you have your environment set up so you can manage your code as this is proving to be a bit of a nightmare..
thanks in advance
I have the same requirement and setup.
I use Visual SVN Server on my dev machine to host all of my repositories. (Windows 2008 R2)
http://www.visualsvn.com/server/
I use TortoiseSVN on Windows for general SVN tasks:
http://tortoisesvn.tigris.org/
I use AnkhSVN for Visual Studio SVN support:
http://ankhsvn.open.collab.net/
I use the built in SVN command in Mac for general SVN tasks:
http://svnbook.red-bean.com/
On Mac I also use Versions for a graphical SVN front end:
http://versionsapp.com/
Everything except Versions for Mac in this list is free.
As for the client, you can use the subversive plugin for Eclipse. Simply go to Help -> Install New Software -> (Select your version of Eclipse) -> Collaboration -> Subversive. Very easy to use.
There are many, many SVN options for windows. http://willperone.net/Code/svnserver.php This tutorial refers to TortoiseSVN, but that's just one option of many. Also consider that running it under IIS may not be desirable (http://stackoverflow.com/q/2165540/684934).
I would sign up for a free hosted SVN service
http://www.atlassian.com/hosted/bitbucket/
And use either a SVN plugin or a Tortise / SmartSVN tool to commit.
Commit your code daily, or whenever you get to a working set. You will have unlimited history etc. Its also great as your happy to delete chunks of code / files when you think they aren't needed, and if you find they are needed later, you can still get them.
I have several projects which are shared between Windows and Mac. The dev machine is a Mac running Parallels: the files are stored on the Mac side, and the source is shared to the Windows side. This is very convenient, as I can switch back and forth between Windows and Mac tools rapidly without having to sync files.
Recently I switched from Subversion to Mercurial, and now I'm having problems with the Mercurial repository becoming corrupt if I use the Windows tools to add/update, etc. I have to be very careful about which operations on the Windows side are safe (mainly the read-only stuff) and of course I forget rather regularly.
Does anybody know why the corruption occurs? I thought Mercurial repositories were platform-agnostic. Any ideas how to prevent it without removing the Windows tools entirely?
Are both the windows side and the OSX side using the same version of mercurial. Mercurial has great backwards compatibility at the network and file level in that any version can push/pull/commit to any previous version's repositories, but it's not forward-compatible, so if your windows side is using mercurial 1.0 and your OSX side is at 1.5 then windows shouldn't be committing to a clone created by the OSX side.
In general mercurial was built for a clone-per-user-per-system and having conflicting actions mediated through push and pull. Shared repos accessed by multiple clients for local-only actions like commit isn't the recommended use case.
Editing on both systems is fine, but commit from OSX only. On the windows side you could enforce that by putting something like this in your %USER_PROFILE%\Mercurial.ini file:
[hooks]
pre-commit = c:\doesnotexist.exe
That should be enough for the hook to fail, which will stop the commit from going through.
I have decided to go with Subversion for a source control repository for my personal and side projects and I'm now trying to decide what OS to use. Currently my file server for my home network is Windows 7 beta. I'm wondering if I should wipe it and install Windows Server 2008 instead? Basically I'd like to know if there are things I could take advantage with a server OS that I can't with Windows 7. First thing that comes to mind is accessing subversion remotely with a VPN connection.
I'm a .net developer, but have dabbled in Linux a bit so I'm not completely turned off to the idea of an ubuntu or debian server...
I imagine the installation and configuration process might go off with fewer hitches if installed on Linux, just because of the package management, but that's assuming some experience with the package system of $whatever_distro. If you're comfortable with Windows, Subversion works perfectly well on there. I've set it up on both, but prefer the Linux installation process (easier Apache integration, in my view), but I had pre-existing Linux experience.
If you're familiar with Windows, I bet you'll find the installation and configuration process easier there. As others have said, many of the tools are cross-platform.
You can run a Subversion server on Windows or Linux (or whatever) so it really doesn't matter. Pick whichever one you already have and feel most comfortable with. Since you are a Windows developer I see no real reason to toss Linux into the mix though.
If your goal is to minimize the amount of work you put into the maintenance of subversion, go with the OS you are most comfortable with. Many maintenance scripts, and subversion hooks are written and available in perl and python which are available for both windows and linux.
One advantage to the Windows server OSes over their client counterparts is that the client OSes are limited as to the number of inbound connections. If you are going to be the only person working on the repo, this may not make a difference. However, if there are multiple people, then this would be an issue. XP Pro/Vista Ultimate are limited by Microsoft to 10 inbound connections. I cannot speak for Windows 7.
To make life easy, try VisualSVN Server. For personal projects there's no reason to setup a separate server just for SVN.
Windows 7 will be able to host Subversion with no problems whatsoever..
If your file-server is already setup and working under Windows 7, I'd say stick with that.. Adding SVN is no reason to install a new OS
You don't need a server at all to use subversion.
If you've already got a file server on your home network, and you're doing this only for you and your personal projects, just use a subversion client such as TortoiseSVN and create your repository (or repositories) on your file server via network share (or mapped network drive, etc).
I wouldn't recommend this for multi-user setups (unless each has their own repository), but for a single user this is the simplest option. And using this approach, to answer your question, you wouldn't gain anything by switching to a server OS such as Windows Server 2008.
I'd actually recommend going with a hosted Subversion provider instead of setting up Subversion on Windows or getting a second server for that purpose. I work for ProjectLocker, but if you Google "subversion hosting", you'll see there are a number of providers that offer free or reasonably priced solutions. The advantages:
It's a hosting provider's primary job to keep your code safe, secure, and accessible, so they focus on uptime, backups, and security monitoring so you don't have to
You don't have to learn how to be a system administrator or Subversion administrator; several providers have user interfaces that make it easy to manage users and permissions.
Hosting instead of DIY lets you focus on what you actually care about: writing great software
I suggest you take a look at ProjectLocker and some of the other providers and decide which one is right for you. You may decide that doing it yourself is the best option for you, but for many people in your situation, a hosted solution has met their needs.
I'm curious to hear the experiences of those who are currently running their SVN server on Windows.
Jeff Atwood has a post on how to setup SVN as a Windows service. It's a great first step, but it doesn't touch on other topics, such as:
What to use for a web-based repository browser? WebSVN can work on Windows, but it ain't pretty.
How to manage the passwd file?
Is it possible to integrate with Active Directory without running Apache?
Strategies for backing up the repository.
Useful global ignore patterns for Visual Studio development (suggestions here, here, and here for example).
Our company switched from SourceGear Vault to Subversion about one month ago. We've got the basics down pat, but would love to discover people's tips and tricks for running SVN in a MSFT world.
Use VisualSVN Server. It integrates with Windows authentication and it handles all the apache setup. It's as painless as SVN can be on Windows.
VisualSVN is the way to go. The built-in Active Directory support is very easy to use.
I have found that VisualSVN is about 50% slower than running SVN as a native service. I always assumed
that was because of accessing via http:// with Apache, which seems like it would have to be slower
than accessing via svn://, which is native TCP/IP.
The Experiment
In the last 30 minutes, here's what I did:
Installed VisualSVN on port 8080, side-by-side with my existing SVN install
Imported three existing repos into VisualSVN
Kicked everyone else off the server
Did side-by-side comparisons of a full svn checkout
Results
Repo 1: 652 files, 273 directories, 60.1MB
23 seconds for VisualSVN over http://
16 seconds for SVN over svn://
Repo 2: 4623 files, 964 directories, 127.9MB
2 minutes, 18 seconds for VisualSVN over http://
1 minute, 30 seconds for SVN over svn://
This is on identical hardware, with the exact same repository. I like how easy VisualSVN is, but AD integration and GUI aren't worth a 50% performance hit.
Anyone else seen this difference? Am I doing something wrong just following along with the default installation options?
I have a fairly indepth tutorials on my blog http://tv.inner-rhythm.co.uk/ on how to set SVN up with Apache and Trac which we use at my company which works for us.
I use a combo of VisualSVN and Tortoise. It doesn't integrate well with visual studio but you can use other plugins/apps for that.
Trac is certainly the best web based project management software I use, it integrates with subversion so you can see timelines of commits and diffs of each versions, it allows tickets and bug reports, and has a built in wiki.
http://trac.edgewall.org/wiki/TracOnWindows
A little knowledge of python and it is easy to get up and running (if your on windows though, use the tracd server: http://trac.edgewall.org/wiki/TracStandalone (this link will show you how to install it as a windows service).
I recommend TortoiseSVN. It adds SVN capabilities into Windows Explorer. In addition TortoiseSVN check to see if the IDE you are using has support for SVN.
Rich Strahl just posted a blog entry on Running VisualSVN Server for Subversion Source Control. Worth a read:
http://west-wind.com/weblog/posts/480534.aspx
For backing up, I wrote a combination of a batch file and a VBScript that runs once a week as a scheduled task. It:
Scans through a particular folder on the file system recursively looking for SVN repositories (we have a multitude of small repositories, as we found that one uber-repository quickly became difficult to maintain and intolerably slow when used with TortoiseSVN);
Uses svnadmin hotcopy on each repository found to create a backup;
7zips all of the backups into a single archive;
Mounts a share on a SAN and copies the archive over;
Deletes all of the temp files;
Emails a "success" notification.
VisualSVN Server + Trac + TortoiseSVN + Ankhsvn.
Done. Smooth as silk. What Visual SourceSafe should have been.
I think you are seeing the difference betweeen the svn protocol and hosting the svn protocol on another.
Similar performance decreases when using svn+ssh compared to svn.
The ease of setup, has made it a no brainer for my team, we just threw it on a vm and ran.
Running SVN under apache really isn't that hard. And you can use mod_auth_sspi to integrate with active directory.