Re: Xcode 3.0 and new SCM features
Re: Xcode 3.0 and new SCM features
- Subject: Re: Xcode 3.0 and new SCM features
- From: Andy O'Meara <email@hidden>
- Date: Sun, 20 Jan 2008 19:04:55 -0500
On Jan 8, 2008, at 3:01 PM, Andrew Pontious wrote:
On Jan 8, 2008, at 6:48 AM, Jake Traynham wrote:
I'm trying to figure out how to get back functionality from Xcode
2.5 and previous with the SCM stuff. I have a CVS repository that
looks similar to this:
/CVS/Common/
/CVS/Project1/
/CVS/Project2/
Both "Project1" and "Project2" use code from the "Common" code
directory. In Xcode 2.5 and before, the SCM feature was able to
figure out when code in the "Common" directory had changed and
allowed me to update/commit/etc that code. Now in Xcode 3.0, it
doesn't see those changes and the context menu for files in the
"Common" directory show "Add to Repository" as if they aren't
already. I tried changing the "root" of the project to my main /
CVS/ directory, but when I do that, I see *all* the changes for
every project in the CVS directory. I also tried adding a symlink
to the Common directory under the Project directories to see if
that would help, but it didn't.
Does anyone have any pointers or suggestions on how to get back
this functionality where the SCM pane shows all changes to files in
(and only in) the current Project's directory and the Common code
directory? This seems simple enough.
In Xcode 2.*, Xcode's SCM system would go through all the files in
your project, figure out their location, and figure out if those
locations were under some sort of SCM system that it could detect.
As you can imagine, this could take a lot of time and resources.
For Xcode 3.0, we switched to a system based on the new Xcode
project root. You specify one SCM system and location for your
project, and that is used to evaluate every file under your project
root.
We realize that this shuts out the kind of functionality that you're
looking for, and I apologize for that. We are looking into potential
solutions for future versions of Xcode, I can't give you any further
information than that.
So our engineering office just finished upgrading our dev machines to
leopard and updating our svn server, so I was looking forward to us
finally using to Xcode 3... Unfortunately, our projects are basically
how Jake described: we have a bunch of common/shared dirs and then we
have project dirs (all within a single repository). The common dirs
are checked out separately from the project dir, so the end result is
that Xcode 3 thinks almost all our project files aren't under SCM,
whereas Xcode 2.x properly matched each file with its respective
checkout.
As many other posters have mentioned about this issue, it's really
frustrating that Xcode 3 has what seems like a large limitation. I
realize that the Xcode team was trying to address the performance
downsides to Xcode 2's SCM file checking, but they had to realize how
many devs would be left out in the cold here? The downsides of having
of a master SCM root seem pretty harsh:
1) Like in Jake's case, *all* the other changes from other projects
show up, etc.
2) Like in our case, since most code in our projects in the common
dirs, most of our SCM interaction has regressed back to command line
under Xcode 3. For committing stuff, that's not a huge setback, but
not having the "M" status for project files is a huge, huge, setback;
hour-to-hour development and code review *revolves* around that stuff!
3) Each of our projects use the "trunk", "branches", and "tags" subdir
convention, so the idea of checking out the *entire* repository (which
it a dizzying idea on its own) seems to add a lot of pain to that
model (if not make it impossible altogether).
Like others have mentioned over the last couple months, it's quite
frustrating to take a step back in productivity/workflow. I'm sure I
speak for everyone who's posted on this issue when I say a solution
for this issue would be really, really appreciated for the next
version of Xcode. I'm sure the Xcode codebase is large and crazy, but
I have to believe that it's possible to internally abstract its SCM
support such that a project uses individual-item SCM or project-root
SCM (it could just be a project setting?). Even if that couldn't
happen, perhaps alternatives are possible, such as that if an item
does not reside in the project master root, then individual-file SCM
is used. Or, it seems reasonable that Xcode could figure out what the
"checkout parents" are for a given project and get the best of both
worlds (in terms of grouped SCM queries and support for independent
checkouts). It would only need to re-perform such an analysis when
the project opens or when items are added or removed. My ideas could
be totally full of holes--I'm just trying to be helpful and
encouraging--so please don't take any time to shoot them down.
Thqnks,
Andy O'Meara
P.S. I've already filed a radar.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden