Cannot get Xcode SCM to work with Gitolite based server - xcode

For whatever reason, I cannot get the built-in source control tools in Xcode 4.1 to work with the git repository I have setup on my server. The server is setup to use Gitolite.
Everything works fine from the command line. I can add the remote, push, pull, and then clone out again. I can also access Github in Xcode just fine.
Has anyone been successful getting these two tools to work together?
Any idea how I can debug this (I have no idea what Xcode is doing behind the scenes)?
The only thing that has stood out to me is that Xcode wants to include a top-level folder when accessing the repository, i.e.: git#my-server.com:folder/repository-name.git and Gitolite doesn't want you to do that. It wants: git#my-server.com:repository-name.git

I have a Gitolite 2.0.3 server running on Ubuntu 11.10, and I am able to use with the built-in SCM integration in Xcode 4.2 running on Snow Leopard.
To see log information about commits and other SCM operations, go to the Xcode log navigator (speech bubble icon in the left column, or select View > Navigators > Show Log Navigator, or press Cmd-9). The log navigator has filters to show only error messages. That should give you more information about what's going on.
One thing that stands out for me in your question is that when using Gitolite, I never use the .git suffix on the client went entering the git URI. Try omitting that and see if that makes any difference when working in Xcode. For example, I have git repositories on the server in folders like ~gitolite/repositories/project1.git or ~gitolite/repositories/apps/ios/project2.git, but when I am on the client, the git URIs look like: ssh://gitolite#myserver.com:12345/project1, or ssh://gitolite#myserver.com:12345/apps/ios/project2.

Related

Open old version of Xcode project files stored in GitLab

I am trying to figure out how to open an old version of my Xcode project that is stored in GitLab. Usually, I use Xcode to push updates to Gitlab and on the occasions, I've had to get my project from GitLab, I simply click the "Open in Xcode" button on GitLab, which brings my project up.
The problem that I'm having now is that I've accidentally introduced a bug into the project that crashes the app and I can't figure out how to crush this bug. The last couple of updates to GitLab contain this bug so I need to revert to a copy a bit in the past. When I click on this update, there is no open in Xcode button, and I'm unsure about how to open this previous version.
I'm hoping that there is a straightforward solution to getting this old version of this file up. I'm just getting started using git, and I'm hoping someone on here can provide some insight.
Can someone please point me in the right direction on the easiest way to revert to an old project update on GitLab?
It seems easier to:
close XCode
cd /path/to/local/clone/of/GitLab/repo
switch to the command line and type git switch <old SHA1> in order to update the working tree with the files content of that past SHA1
open XCode back up.
(Note: git switch is better than the old legacy git checkout command)
If you want to commit some fixes, your git switch command will be:
git switch -c fix <old SHA1>
That will start a fix branch starting from <old SHA1>.

Xcode Server won't build because source control information is in an invalid format

I have XCode Server set up with XCode 6.4 and OSX Server 4.1.5. I had integrations running fine until I transferred my git repository to another bitbucket account. No big deal right? Wrong for me :(. After I transferred my repository, I changed my git remote, I changed the repository location in Preferences in Xcode on my dev computer as well as on my server. Regular git functions are working fine from the command line and from within XCode. Nothing seems wrong until I try to run an integration and then it gives me the following build service error:
Could not check out sources because the source control information is in an invalid format.
I tried deleting my bot and creating another one. I tried cloning my project straight from the new location into another folder in case something had gotten out of sync. I git reset hard to the remote branch just in case even though there was nothing different. I tried cleaning and restarting everything multiple times. I reset XCode Server too (sudo xcrun xcscontrol --reset) and am still getting the error making me think I really did somehow mess up my git repository as far as XCode is concerned, but I have no ideas about what XCode doesn't like about my source control information. Does anyone have any ideas for what I can do or try? I've been tearing my hair out for hours.

How to use Xcode with a cloned git repository

I am new to gitHub and have been invited to work on a private project. I am familiar with XCode and would like to use it to work on the project for it's autocompletion capabilities that I am used to. My problem is I don't know how to set this up so that I can pull the git repository, edit and test in XCode and then push. I have gone through a few tutorials on setting up git in XCode and I am successful in being able to connect to a repository I have pulled, but don't know how to use this as an XCode project once I have done so.
Here are a few specifics:
I made an SSH key for my computer and have cloned the repository through the terminal. Obviously I can update the files here and then use git commit and git push, however I want to use XCode for editing for code completion.
This project has a make file, though I don't know how to use these other than just typing "make all" in the terminal. I am assuming that I can set this up with Xcode so that when I build it uses the make file, but reading the documentation on this made me realize I don't understand enough to set this up.
I have tried making an Xcode project and then importing my files, but the problem is that Xcode insists on making a directory inside the project folder with the same name as the project where it stores all of the files. Therefore all of the addresses for my header files become wrong.
I assume that cloning a git project and then editing in Xcode is pretty standard. Does anyone have a place I can go for help?
Download SourceTree from the app store. It's free and kicks ass. You can just clone it in the terminal window using 'git clone WhateverOneYouWant -b WhicheverBranch'. Then just drag the project from the finder into the main sourceTree window.
Or alternatively, you can just grab it directly from gitHub on the main opening page of xcode. If there are no projects currently open, in the left part of the opening window, you'll see a line that says 'connect to a repository'.
Let me know if you have questions!
This isn't an exact answer to your question, but it does work.
If you install git separately and clone from the command line, you can:
Use Spotlight to Locate the Project folder you cloned
Double click the corresponding .xcodeproj file and start editing.

Cross-platform SVN issues, please explain

I am a Mac-based (10.8) web developer, trying to work with other Windows-based developers. They are using SVN, although most of them do not check out files to local repositories. They mostly edit the file on the local server via Explorer, and then use TortoiseSVN shell enhancement to right-click and "commit" what they just edited.
I cannot seem to do this, as my preferred SVN tool Versions (as well as Dreamweaver CS6) require access with the SVN, HTTP, etc. protocols. I get errors trying to use the file system.
So, I am trying the command line, navigating to the file I need to edit, open it, edit, save. I can run svn status on the directory and I see the file status as "M". If I try svn commit -m "updated" myflie.css or similar, I get an error:
svn: Unable to open an ra_local session to URL
svn: Local URL 'file://webstage-01/svn/repository/fc-dev/assets/css' contains unsupported hostname
I looked in the .svn folder "entries" file an see this:
10
dir
20788
file://webstage-01/svn/repository/fc-dev/assets/css
file://webstage-01/svn/repository
2012-06-26T16:08:10.220007Z
20747
JSmith
So it looks like that's where it's getting the path from, which is not a valid MacOS or Unix path.
Suggestions?
It sounds like the local server is already a checked out working directory that everyone is sharing. This is the completely wrong and awful way to do Subversion. In the end, you have no idea who is making the change because they're all using the same client. Plus, there's no guarantee that working clients use the same format of the working directory. If someone has a version 1.6 TortoiseSVN on their system, they could damage that working copy.
The correct way is for everyone to checkout a local copy of what's in that Subversion repository to their local machine (Windows or Mac), and then do their changes there and check it in. You won't have the issue of someone messing up that directory. You know who is making the changes. You won't have an issue of what happens if two people try to make the same changes at the same time. It's the way Subversion is suppose to work.
The Mac has the Subversion command line client. (Assuming you're using Mountain Lion -- the latest release) You need to install XCode (free from the Mac App store), and then in XCode, install the command line tools. Look at the on line Subversion manual and learn how to do the checkout in Subversion, create your own working directory, and check in from that.
There are many options if you want a Mac OS X GUI Subversion client. I highly recommend you look at Pathfinder](http://cocoatech.com/pathfinder/). It has a built in Subversion GUI client, but it also has many Finder enhancements that make it an excellent Finder replacement -- especially for power users. It's $40, but I think it's worth it just for the built in Terminal client.
I don't think you can do that. The svn folders on "local server" were created by a platform-specific tool like TortoiseSVN on Windows. Obviously it will have paths, etc. specific to Windows. You will need to checkout separately and make commits.
Also, BTW, set the EOL property to 'native' so that you do not run into cross-platform EOL issues.

Can the instance of Git that's installed with Xcode 4 be used for web development?

I'm a web developer, mainly a front-end developer, and I've been using Git in my workflow for a while now and I'm hooked.
I'm about to get a new Macbook and my plan is to install Xcode 4 (to both use the iOS Simulator and dabble in Objective-C in my downtime). I know that Xcode 4 comes with Git, but I'm wondering if that particular instance of Git can be utilized for my web development projects, or is it possible that it can only be used for Xcode projects only.
Basically, with Xcode 4 installed, do I need to install Git anyway to use it with non-Xcode projects?
I've just done the following:
Obtained the new Mac and booted into Lion for the first time
Downloaded Xcode from the App Store and installed it
Opened Terminal and typed git --version and "git version 1.7.4.4" was returned
CD'd to my Desktop and typed git init as a temporary test and "Initialized empty Git repository in…" was returned
(Now it's time to remove the .git directory on my fresh Desktop).
So, it looks like my question is answered: the version of Git that comes with Xcode—albeit not the latest version—appears to work file for all desired uses, even outside of Xcode.
You do. In fact, the Xcode interface to git is intentionally hobbled to be "feature-compatible" with SVN. They wanted a consistent interface, regardless of which versioning system was on the back-end. So no branching and merging. It does a git add when you create a file, in fact, so you don't even get to control staging.
I've quit on Xcode's git interface, I don't even let it know I'm managing its files with git via the command line.

Resources