Everyone knows SVN (Subversions) is the best version control tool on the planet. XCode, though, might not be as great as eclipse or Visual Studio, it offers one of the best integration with open platforms than both eclipse and Visual Studio.
Apple scripting and XCode makes XCode even more powerful. In fact you can set up keyboard shortcuts to directly search the selected function name or keyword on Google or Apple Docs. (Visual Studio doesn’t offer this support (or atleast that I’m not aware of) But more on that on another post.
Let’s come to the point.
Myself being a iPhone developer, I didn’t use SVN for a long time as a majority of tutorials out there are either too complicated or not direct to the point. Finally I managed to find out a way to use SVN with XCode. In this post, I attempt to take you through one of the easiest way to configure SVN to work with XCode.
I assume that you have already installed XCode. If not, go download your copy from iPhone developer center for free.
First, ensure SVN is installed on your mac.
Your Mac normally comes with SVN installed by default. To check whether its installed, open Terminal.app (I really don’t have any idea where it’s located, Spotlight “Ter” and Boom! there you go…!)
Type, the following
in the prompt.
You should see something like this…
Type SVN --version to check the version of SVN installed on your mac
If not SVN is not installed on your machine. But this should normally not be the case. If that happens to you, install SVN Server from https://opensvn.csie.org/
SVN Client Configuration
Many other sites advise you to download Versions. Though it’s good and it comes clean client. I don’t see a value @ 39 pounds (100 Singapore $) I’m not aware of any free alternatives. But the good news is XCode comes with a very limited XCode client.
Limited as in, It can connect to an existing repository, but not create one. So committing and checking differences shouldn’t be a problem. However XCode doesn’t have the ability to add your project to a SVN repository. So you have to do two things using the SVN command line.
1) Create a SVN repo
2) Add your project to the created repo.
After these two steps are done, you can use XCode to checkout the files, commit changes directly from XCode.
Let’s see these two steps with illustrations.
*** BEWARE *** these two steps involve command line. But the good point is, its not complicated.
Type the following command into Terminal
svnadmin create /Users/<mugunthkumar>/tempsvn
You should see the folder /tempsvn created under your user directory with the following sub directories.
Sub folders created for a SVN repository
You don’t have to touch any of these. This is just to confirm that the svn create command has indeed worked.
Whoa… Step 1 is done!!!
Step 2: Create a SVN repository and import your project into it.
This step is easy. But not as easy as the first step. In Terminal prompt, ls to the folder where you have your source code files.
*** IMPORTANT ***
For importing into SVN repository, you have to copy the files you want to import into an empty folder. This is because, if you want to import a folder /Source which contains some files and some sub folders, the import command will not add the folder /Source to the repo. It will add only the *contents” of the folder /Source. This is not what we normally expect.
So, to import your files into the repo under a folder /MyGreatApp, you have to create a folder called /Temp (or anything) and copy your /MyGreatApp folder into /Temp and import /Temp into your project. Don’t worry, the /Temp doesn’t get created in your repository.
Yeah, i know it’s quite counter-intuitive. But you don’t have a choice. Now let’s get started.
Create a directory (I’ve chosen Temp in the example). Copy your code directory “MyGreatApp” into this Temp. Do all these in Finder. Now open Terminal and ls to the directory about “/Temp”. and type in this command into Terminal
svn import -m "Comment goes here" ./Temp file:
the -m “Comment goes here” is optional
the command takes in the directory you have to import and the URL of the repository as it’s parameters. Remember the first step? The repo creation step? We created the repository in /Users/mugunthkumar/tempsvn? If you pass the directory as such, the command fails. So prefix, “file://” to it. (Note the triple / in the command)
After typing this command, you will see a log of all sub directories and files being added to the repo.
Now we will setup XCode to open the project from the repository. Fire up XCode from your Dock (or Spotlight it)
From the XCode menu, choose SCM and select Configure SCM Repositories as shown
SCM Menu in XCode
To the left, click the “+” icon to add a new repository to XCode.
Type in a name for your repo (iPhone Dev). This name can be anything.
Fill in the URL as file:///Users/mugunthkumar/TempSVN and the remaining will be filled in automatically by XCode. This URL is same as the one that your provided to the svn import command in step 2. You can provide a user name and password if you want, but if you are the only user (like me and many other iPhone developers), it’s not required.
Now you have mapped your repository to XCode. Next, checkout the code which you have imported. To do this, Click SCM from XCode menu and choose repositories. You should see the repo you created (iPhone Dev) on the left and some commands including “Check out” on the Repository Window.
XCode Repositories Window
Click the “Check out” button (second from the left) and check out the files to any convenient location.
Now open the project you checked out. you can safely delete or archive the copy that you imported previously.
XCode will open it normally. Your project is still not linked to SVN! Relax. Just one more step…! You have to tell XCode to use the (iPhone Dev) repository you just created. This is easy. Don’t worry.
Open your project properties by clicking Project -> Edit Project Properties.
Project Settings Menu
From the project info dialog, select the General tab if it’s not already selected and choose the SVN Repository for your project.
Select a Repository
Close the info Window.
All Done! Your XCode project is now linked to your checked out. On your files menu, you should see something like this.
SVN Connected Project
The “M” denotes modified files. Various other statuses are also displayed here.
Your SCM menu should show the following options.
SCM New Menu
You can now compare your changes to the latest version, commit your changes to the repo and do a lot others from this menu.
That’s it. Hope you liked the article.
Do write a comment or link back if you liked this article
Share and Enjoy:
- iPhone Tutorial – In-App Email codeproject Sending an email from your iPhone application is...
Related posts brought to you by Yet Another Related Posts Plugin.