• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: SCM Interface (Newbie)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SCM Interface (Newbie)


  • Subject: Re: SCM Interface (Newbie)
  • From: Jack Repenning <email@hidden>
  • Date: Sun, 13 Apr 2008 17:53:03 -0700

On Apr 13, 2008, at 6:34 AM, Jeffrey Oleander wrote:
So, you're checking out a copy of the whole repository!?
Why not just the files you're changing?
This is one of the things that seemed especially odd in
the CVS and SVN manuals.

Well, you check out some subtree. You don't have to (typically don't) provide the URL of the top level of the whole repository, but rather some subdirectory. For example, in the "canonical" repository arrangement there might be:


REPO/trunk/a
REPO/trunk/b
REPO/trunk/c
REPO/branches/B1/a
REPO/branches/B1/b
REPO/branches/B1/c
REPO/tags/T1/a
REPO/tags/T1/b
REPO/tags/T1/c

You would typically check out REPO/trunk (to work on the current stuff), or REPO/branches/B1 (to work on that branch).

Why is it like this? Well, because it was created by software developers, for software developers: they check out a complete copy of the source tree for their product, because after they make changes they also build the whole product and test it.

I'm used to just telling the shared master repository
what files I'm planning on changing, and having the
IDE automagically handle the implied linking/substituting
my changed and recompiled code in with the last
integrated libraries, frameworks, etc.


I suspect you've tripped over a common term-variation, here.

In some VC systems, "check out" means "grant me permission to modify these files." You would have a copy, or perhaps some voodoo linkage, to the whole product, but in some non-modifiable state. Then, when you decide you want to change a file, it has to be checked out, which at the least makes some sort of data entry at the server noting that you're now editing the file, and perhaps has to copy the file to your desktop, or change its permissions, various stuff like that. That what you're thinking?

That's not the SVN model. Rather, SVN uses the term "check out" to mean "I don't have these files in any form now, please gimme some." The somewhat later moment when you decide you want to modify a file is not marked by any SVN command at all, you just go ahead and make your changes. The (still none the less necessary) coordination to prevent your changes from interfering with someone else's changes only happens at "commit", when you make your changes available to everyone else. At that point, if indeed several people have been changing the same file, you might get an error telling you that someone else has committed a change since your base copy of the file; you use the "update" command to get those changes, and conceivably might have to do something complicated to reconcile your changes with theirs; ultimately, you try your "commit" again, and hopefully this time it goes through.


-==- Jack Repenning email@hidden Project Owner SCPlugin http://scplugin.tigris.org "Subversion for the rest of OS X"


_______________________________________________ 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
References: 
 >Re: SCM Interface (Newbie) (From: Jeffrey Oleander <email@hidden>)

  • Prev by Date: Re: how to link with readline library in an xcode project?
  • Next by Date: What causes the main window to open?
  • Previous by thread: Re: SCM Interface (Newbie)
  • Next by thread: Re: Re: Link-Error XCode 3.0: -init can only be used with -dynamiclib
  • Index(es):
    • Date
    • Thread