Rob,
Thanks so much.
I knew some of what you covered already, but I still appreciate the
detail. The *really* helpful concept is the tagging stuff. I really
appreciate the detail on that and on the branching! :o) Those ideas make
some real sense to me now. I don't know right now if I have any other
questions about source control procedures in general. I imagine that
I'll have more questions when I start putting the concepts into practice.
What I really need to know or learn now is how to accomplish all this
using VSS, (either that or I need to convince my client to use SVN).
Surely, there are similar concepts in VSS.
If anyone feels like expanding on the stuff Rob has gone over with me
here I'd really appreciate it! Remember, that I'm trying to keep the
process as simple as possible. I've got a client who has not use any
source control in a while, and admits that he can't remember everything
that should be done, so he's open to my suggestions on what our new
development process might be. Also, I've got a co-worker who seems to
have some sort of grudge when it comes to source control. He says that
he sees the benefit, but still complains about it. So the more
streamlined and easy the process, the better.
Also, now that I think of it. Is it a bad idea to implement source
control for our production code but not with our development code? It
strikes me as probably not the best idea, but are there perhaps
consequences or problems that I maybe haven't thought of associated with
not using source control for all of our code?
Thanks again, folks. I really appreciate the groups help. :o)
Chris
Robert Gatti wrote:
Chris,
Well, first I'll define the terms as I'm using them in case I'm using
them wrong.
Repository - a collection of projects on the subversion server
Project - a folder in a repository where source code sits, including
forks and metainfo
Head - a folder under the project containing the current source code,
sometimes called trunk
Tag - a single name that points to all source files no matter what
version each file is at
Fork - a copy of all or part of the project source files at a certain
version
At work we have a linux box running the subversion server, I think you
can run subversion on Windows but I've not tried. This server contains
all the source code. When a new project is created, a folder called
"trunk" is made under the project folder on the subversion server.
This is referred to as the head of the project and contains the
working code.
To work on a project I checkout the part I want to work on. Normally
this is the head and I want to get the entire project. So, when I
checkout the project I get a copy of the source on my computer. Most
of the time I put this in my webroot. After I've worked on the code
for a while and have something done I synchronize my copy with the
repository. This checks my changes against the code in the repository
and tells me if someone else has made changes that conflict with mine.
If there is a conflict I can figure out what I need to do to resolve
it. Most of the time it's just copying the changes my buddy made into
my file before committing what I did, this way I don't overwrite his
changes. Then I commit, which means to copy my changes back to the
repository.
When a change to any file is committed each file in the project on the
server has it's version increased. Version numbers start at 1. When
the project gets far enough along and we want to remember the current
state of the code on the server we tag it. This means the version each
file is at is remembered and associated with a name, like "release 1".
From that point on, no matter what has happened to the code, checking
out "release 1" will always get the same files at the state they were
in when tagged.
Now, I understand how forking works but honestly haven't needed to use
it yet. Basically, forking, also called branching, makes a copy of the
code on the server.
An Example, think of a project that was tagged with "release 1" at a
certain point. Development continued for a release 2. Release 1 is
checked out for live production and later a bug is found. Work has
already begun on release 2 so the code at the head is in flux. To
solve this the project is forked at release 1; this creates a copy of
the code at the release 1 point. The bug is fixed on the forked code
and the fix is uploaded live. To make sure the code at the head also
has the bug fix the fork is merged back into the head.
Let me know if more explanation is needed.
Rob
------------------------------------------------------------------------
_______________________________________________
Reply to DFWCFUG:
[email protected]
Subscribe/Unsubscribe:
http://lists1.safesecureweb.com/mailman/listinfo/list
List Archives:
http://www.mail-archive.com/list%40list.dfwcfug.org/
http://www.mail-archive.com/list%40dfwcfug.org/
DFWCFUG Sponsors:
www.instantspot.com/
www.teksystems.com/
--
http://cjordan.us
_______________________________________________
Reply to DFWCFUG:
[email protected]
Subscribe/Unsubscribe:
http://lists1.safesecureweb.com/mailman/listinfo/list
List Archives:
http://www.mail-archive.com/list%40list.dfwcfug.org/
http://www.mail-archive.com/list%40dfwcfug.org/
DFWCFUG Sponsors:
www.instantspot.com/
www.teksystems.com/