[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: $Name$ causes files to be locally modified
From: |
Todd Denniston |
Subject: |
Re: $Name$ causes files to be locally modified |
Date: |
Thu, 23 Jun 2005 09:37:33 -0500 |
> "Jorgensen, Steven" wrote:
>
> I am having a problem with the $Name$ keyword expansion. We use a
> cvs tag to indicate when a file has moved beyond local testing stage, and
> is ready for general use by all developers (a release tag if you will) so
> that we can automate a update and build process to keep a working
> development version of our software compiled for all developers. So this
> tag is not permanently attached to a single revision, rather it moves as
> files get modified and tested by individual developers and released for
> use by other developers.
>
> The problem I'm having is when people use the $Name$ keyword in
> their file. In this tree of "released" software, it causes any file that
> contains a $Name$ keyword to be in a "Locally Modified" state when it is
> checked out. Where the only difference in the file is the fact that
> $Name$ is now filled out. The next time around we run an update on one of
> these files that changes, produces a conflict on the $Name$ line. For
> example:
>
> Myheader.h
> -----------------------
>
> const char *tag = "$Name$";
>
> Becomes on the next revision.
>
> <<<<<<<< Myheader.h
> Const char *tag = "$Name: releasetag $";
> ======
> Const char *tag = "$Name: $";
> >>>>>>>> 1.2
>
> Is there any way to prevent this from happening? On all the other keyword
> expansions $Id$, $Header$, etc, the keyword is expanded, but the file's
> status is "Up-to-date".
>
> Thanks for any help.
>
> Steve
>
> Steven Jorgensen
> address@hidden
Method #1, I think if the update is done with the '-kk' option it will stop
the expansion.
Method #2, tell your developers to stop using keywords and remove them where
ever they find them.
Method #3, do Method #2, and prevent the developers from checking files in
to the baseline with the keywords inside, using a commitinfo script.
*******begin simplistic commitinfo script (in bash)*****
#echo "0($0) 1($1) 2($2) 3($3) @($@)"
#get rid of path at the begining
shift 1
#echo "0($0) 1($1) 2($2) 3($3) @($@)"
ARGS=$@
for i in $ARGS
do
# cat $i
# exit 1
if grep -e \\$Name:\\$ -e \\$Id:\\$ $i
then
echo " we no longer allow rcs keywords in the files, find your info in
the"
echo " cvs log from now on."
exit 1
fi
done
*******end simplistic commitinfo script*****
BTW never written a commitinfo before, no warranties on the above script.
--
Todd Denniston
Crane Division, Naval Surface Warfare Center (NSWC Crane)
Harnessing the Power of Technology for the Warfighter