This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: svn diff branch woprking copy against mainline?


Mike Stump wrote:

svn diff --old svn+ssh://gcc.gnu.org/svn/gcc/tags/gcc_4_0_1_release/ gcc/file.c --new file.c

Thanks, --old / --new does the trick. However, I must say the error message is rather misleading.


svn needs to go on a long command line diet, it is seriously no fun to repeat things, over, and over. In cvs, I used the equivalent of svn+ssh://gcc.gnu.org/svn/gcc once a year or so, with svn, it is just annoying.

Agreed. The problem here actually seems to be with the design (or non-design) of branches
and tags in svn. IIUC, svn has no concept that all the files under trunk are really the mainline, and
that the trees under branches/xxx bear any relation to trunk other than that all the files and directories
happen to be related by a copy operation. In order to have a shorthand to redirect from one branch
to another (or branch to mainline or vice versa), svn first would have to have a concept of where
the mainline and the branch roots are in the first place, and what to call them. Likewise for tags.
Considering different possible repository layouts and languages for the trunk/branches designators
in the actual full tree, that seems require a configuration file (or a section in a larger configuration
file).
Maybe something like:


#(nick)name-regexp location
trunk                         trunk
mainline                   trunk
\(.*branchpoint.*\)    tags/\1
\(.*branch.*\)            branches/\1
\(.*\)                          tags/\1

with the further constraint that a match occurs only if the associated location exists.

E.g. if you say -rgcc_4_1_1_release, and tags/gcc_4_1_1_release exists, you'd
refer to files in that subtree rather than the ones your current working copy is based on.


Another problem with command line length extension is specifying the number of lines
of context. To specify nine lines of context used to be a simple -9, then the POSIX police
came and required us to use -U9, (without asking if we wanted to be posixly corrected or
posixed any harder) and with svn this is finally expanded to -x -U9.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]