[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Facing issue in SVN pre commit hook | svnlook cat

From: Branko Čibej <brane_at_wandisco.com>
Date: Thu, 25 Jun 2015 10:15:42 +0200

On 25.06.2015 10:10, Dhiraj Prajapati wrote:
> Below is the code snippet I am using. I need the file contents in a
> variable.
>
> *fileContents=`$SVNLOOK cat $REPOS $FNAME -t $TXN`
> *
> *echo "contents:" $fileContents 1>&2*
>
> Am I doing anything wrong?

Yes of course you are. You really should read a manual about shell
argument processing.

What's happening here is that shell sees the 'echo' command with the
value of the fileContents variable as its argument list, and one of the
arguments is '/*', and because '*' is not quoted it expands it as a
wildcard.

At the very least, you should be quoting the variable value, like this:

    echo "contents:" "$fileContents" 1>&2

but even that is not completely safe.

> On Thu, Jun 25, 2015 at 1:37 PM, Branko Čibej <brane_at_wandisco.com
> <mailto:brane_at_wandisco.com>> wrote:
>
> On 25.06.2015 09:31, Dhiraj Prajapati wrote:
>> Hi,
>> I have a pre-commit hook which validates the contents of the
>> files being committed before commit.
>> I am using /svnlook cat/ command to read the contents of the file
>> being committed.
>> However, whenever there is a leading slash on a particular line
>> in the file, the /svnlook cat/ command fails to display the
>> slash. Instead it prints the names of all the files/folders in
>> the root directory.
>>
>> *Example file contents:*
>>
>> xyz
>> <input name=abc/>
>> /*
>> abc
>>
>> *Command:*
>>
>> svnlook cat <repository_path> <file_name> -t <txn>
>>
>> *Output:*
>>
>> xyz <input name=abc/> /app /bin /boot /cdrom /dev /etc /home /lib
>> /lost+found /media /mnt /opt /proc /root /run /sbin /sources /srv
>> /sys /tmp /usr /var /vmlinuz /vmlinuz.old abc
>>
>> I want/svnlook cat/ to print exactly what is in the file. Please
>> assist.
>
> This is "impossible" in the sense that 'svnlook cat' does not
> process the contents in any way, it just prints them to stdout.
>
> You're probably piping the output of 'svnlook cat' into some kind
> of program or script that validates them, and I suspect that
> script is interpreting the contents so that it lists the directory
> contents as you described. You should most likely look for the bug
> in your validation script.
>
> -- Brane
>
>
Received on 2015-06-25 10:15:53 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.