Danek Duvall wrote:
> xref:
> 
>> if [[ $SCM_MODE == "unknown" ]];then
>>      print -u2 "Unable to determine SCM type currently in use."
>>      print -u2 "For teamware: webrev looks for \$CODEMGR_WS either in"
>>      print -u2 "              the environment or in the file list."
>>      print -u2 "For mercurial: webrev runs 'hg root'."
>>      exit 1
> 
> Why the references to webrev here?  (Same applies to flg.flp.)

It looks to be where the code came from (which explains some of your other 
comments).

>> elif [[ $SCM_MODE == "mercurial" ]]; then
>>      hg_root=`hg root 2>/dev/null`
>>      codemgr_ws=$hg_root
>>      SRC=$codemgr_ws/usr/src export SRC
>>      MACH=`uname -p` export MACH
> 
> I would set MACH and SRC outside of this if, and get rid of the use of
> $hg_root -- just set codemgr_ws directly.  Ditto with the teamware clause.
> 
>> elif [[ $SCM_MODE == "teamware" ]]; then
>>      codemgr_ws=$CODEMGR_WS
> 
> You set codemgr_ws here, even though CODEMGR_WS is potentially set later in
> this clause.  But why introduce codemgr_ws at all, instead of just using
> CODEMGR_WS throughout?  I don't see a reason to avoid that environment
> variable in mercurial scenarios.  (Same applies to flg.flp.)

There was much (much) discussion in that regard previously, it was voiced 
that CODEMGR_* were a "TeamWare thing" and should not be used with 
mercurial.  I disagree entirely, but the discussion never really finished. 
If we want to default to me winning, that's fine by me ;)

>> print -u2 "   SCM detected: $SCM_MODE"
> 
> This needs to be removed before integration (I assume it's just for
> debugging).

Also from webrev (I'm not sure why in that case, either).

>>              make -e -f $XREFMK xref.flg 
> 
> You removed the "> /dev/null" here.  Why?

I'd assume debugging.

> 
> flg.flp:
> 
>> #
>> # detect_scm
>> #
>> # We dynamically test the SCM type; this allows future extensions to
>> # new SCM types
>> #
>> function detect_scm
>> {
>>         #
>>         # The presence of $CODEMGR_WS and a Codemgr_wsdata directory
>>         # is our clue that this is a teamware workspace.
>>         #
>>         if [[ -n $CODEMGR_WS && -d "$CODEMGR_WS/Codemgr_wsdata" ]]; then
> 
> Wouldn't the output of workspace name be more appropriate here?

This is verbatim from dp's webrev cleanup work (4921786 et al.)  If I recall 
the email exchange correctly, Dan wasn't aware that 'workspace name' would 
behave in all cases.

>>      elif [ "$SCM_MODE" = "mercurial" ]; then
>>              for dir; do
>>                      if [ -d $codemgr_ws/$dir ]; then
>>                              cd $codemgr_ws
>>                              hg locate "glob:${dir}/${pat##s.}" | prpath
> 
> You just need a single '#' there.  But I'm not sure that this does the same
> thing as the find command in the teamware clause above.  There, if $pat is
> "Makefile", then it'll find all Makefiles under $dir.  This will simply
> find $dir/Makefile.

That would be my fault, when giving examples.  Sorry.  (the ## would be my 
fault, too)

> Getting this working right runs into mercurial bug 108:
> 
>     http://www.selenic.com/mercurial/bts/issue108
> 
> for which there's a workaround.  So I think you probably want something
> like
> 
>     hg locate "glob:$dir/**/${pat#s.}"
> 
> It's a bit sad that this takes ten or twelve times as long as the find
> command.  You could use something like
> 
>     hg manifest | grep "^$dir/.*/${pat#s.}\$"
> 
> which is faster, but still not as fast as the find command.
> 

When I was looking at this, the difference between the last two was minimal, 
but the difference from 'normal' was high.  The bug on grommit mentions 
flg.flp -r in $SRC/uts taking 15 minutes (versus a handful of seconds), when 
I was trying.

-- Rich

Reply via email to