there are two "pre" commit scripts. One pre-commit happens first and 
handles things like ensuring no tabs in a c++ src file. The other 
start-commit is for doing just what i'm trying. I have implemented, 
tested and currently using  these scripts in bash. I am creating a 
BACKUP server that has to run on windows. I can't install perl, php, 
python or any other scripting lang. so I have to compile the exe on my 
workstation then had it off to the admin to load it into the hooks dir.
I tried the previous suggestion of using strcmp and no joy.
I even reduced my code to
int main(){
return 0;
}
and still nothing.
Kevin Grover wrote:
> Just guessing, perhaps return is not the same as exit?  It's been too 
> long since I've used C/C++.
>
> You could also try creating the script in bash, python, or perl 
> first.  Why do you need it in C++?  It's seems trivial?
>
> Also: look at the example scripts for what arguments are passed into 
> the hooks.  According to the pre-commit.tmpl script in my hooks 
> directory.  The arguments are repo and txn NOT repo and user.  You'll 
> have to use a command on txn to look up the user.
>
> Just some quick throughts.
>
> - Kevin
>
> On Wed, Jul 23, 2008 at 6:45 AM, Mike Crouse <burnclouds_at_gmail.com 
> <mailto:burnclouds_at_gmail.com>> wrote:
>
>     I'm trying to write some hooks using c++.
>     I am using svnsync to replicate data across two servers.
>
>     I use start-commit on the primary so that it blocks user
>     "replicator" from committing to the primary repo:
>
>          if (USER != "replicator") return 0;
>          return 1;
>
>     I use start-commit on the backup so that it blocks all other
>     users from committing to the backup repo:
>
>          if (USER != "replicator") exit 1;
>          return 0;
>
>     I use post-commit on the primary to call:
>
>     /usr/local/bin/svnsync --non-interactive sync svn://primary/repo1
>     --no-auth-cache --source-username replicator --source-password
>     replicator --sync-username replicator --sync-password replicator &
>
>     and post-revprop-change to call (using short hand for the REV
>     variable):
>
>     /usr/local/bin/svnsync --non-interactive copy-revprops
>     svn://primary/repo1 $REV --source-username replicator
>     --source-password replicator --sync-username replicator
>     --sync-password replicator --no-auth-cache &
>      
>     Here is a short copy similar to my start-commit on the primary:
>
>     #include <iostream>
>     using namespace std;
>     int main(int argc, char * argv[])
>     {
>      
>         if (argc>=2){
>          string REPO=argv[1];
>          string USER=argv[2];
>         }
>         else{
>         cerr << "Not enought arguments";
>         return 1;
>         }
>          if (USER != "replicator") return 0;
>          cerr<<" The replicator is not allowed to commit to the
>     primary server";
>          return 1;
>     }
>      
>     I compiled using gcc.
>     Made the exe executable by every one.
>     put it in repo1/hooks/start-commit.exe
>     and ...
>     When i try to commit as a normal user on the primary server i get:
>     >svn ci -m "test commit"
>
>     Sending        testcommit.text
>     Transmitting file data .svn: Commit failed (details follow):
>     svn: 'start-commit' hook failed with error output:
>
>     >
>     No error output.
>      
>     if I call the start-commit explicitly all works fine.
>     but svn can't seen to handle it.
>      
>     Help. Please.
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-07-26 06:30:54 CEST