On Sun, Jul 20, 2008 at 01:34:41PM -0700, Lan Barnes wrote:
That branch names and directory names share the same namespace means that
P4 can't tell the difference between a file rename and a branch. So, if
you have branched a tree that has renames in it, you basically have to
track down what happened, and "do the right thing", for every single file.
You're doing it wrong. Don't do an add, integrate it. That keeps the history.
That's what I meant. p4 integrate is used for both branching and renaming
files. When both happen in the same directory it needs a lot of help.
Earlier you said:
This strikes me as a merge issue...
Maybe that is the issue that gets missed. To me, merging is primary
purpose of having branches. Just being able to have divergent versions of
the code is only a very limited use of what branches are for. When the VCS
can't keep track of merges between them, they are of limited use, or at
best, a complete pain to do anything with. Being a complete pain
translates to them not being used very much.
I believe they have a totally different schema/structure inside. I can't
prove it.
Under the hood, they are very different, but that's like saying two
filesystem implementations use different representations on disk. What
primarily matters are the semantics the VCS presents.
Realizing this distinction is one of the real nifty things Linus did with
git. Computing deltas was implemented well after much of the system was
already working. The semantics didn't change at all, it just started
representing the data better.
The negative consequence of this implementation approach is that the
user-experience part of git is still gradually growing. Most of the "git
is too hard to learn" is not really the case any more, and what's left is
being worked on.
David
--
KPLUG-List@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list