Modify

Opened 4 years ago

Closed 3 years ago

#8341 closed defect (fixed)

SVN post commit hook MERGE message reported

Reported by: AndersH Owned by: bobbysmith007
Priority: normal Component: TimingAndEstimationPlugin
Severity: normal Keywords:
Cc: Trac Release: 0.12

Description

When using the latest 0.12 version of the trac-post-commit-hook I got a strange MERGE message back on checkin to subversion. My local copy of the checked in file did not advance the version number, but the subversion repository got the new file-version. The ticket was not updated either.

An older version (I saved previously for 0.11) of the hook script works ok so I assume that it is only the trac-...-hook script that is malfunctioning. I could not find any helpful things in the logs for apache,trac or the hook script itself.

I'm using Eclipse 3.5.2 with Subclipse (which put up the dialogbox with the MERGE message) Subversion on server is version 1.6.12. Trac is 0.12.

Attachments (2)

2010-12-28 21-42-41 Merge error.png (36.0 KB) - added by AndersH 4 years ago.
Merge error
2010-12-28_21-42-41_Merge_error.gif (17.1 KB) - added by AndersH 4 years ago.
New try with a gif file and no space…

Download all attachments as: .zip

Change History (10)

comment:1 Changed 4 years ago by bobbysmith007

Well you haven't given me much to work with here. I have tested that script, but it is modified from my default (which interacts with more/other systems), so their could be bugs. If you message didnt get through that sound like a bug.

Did you get the log for the commit hook or if you did, what was in it? (It looks like by default I have logging setup oddly). But if you are not getting a log make sure that the logfile and LOG variables make sense, and that the script has permission to write to that location. After you get logging of some sort working, please post it here and I will see if we cant get it working.

HTH,
Russ

comment:2 follow-up: Changed 4 years ago by AndersH

This is the log-message of the commit hook on the Trac side. Enjoy ;-)

Begin Log
cmd_groups:[(u'references', u'#273 (1)', u'1', u)]
cmd:references, tkts#273 (1)
tkt_id:273, vals[[<bound method CommitHook?._cmdRefs of <main.CommitHook? inst
ance at 0x9c7a74c>>, u'1']]
Setting ticket:<trac.ticket.model.Ticket object at 0xa1c1d8c> spent: 1.0

comment:3 in reply to: ↑ 2 Changed 4 years ago by AndersH

Replying to AndersH:

This is the log-message of the commit hook on the Trac side. Enjoy ;-)

Begin Log
cmd_groups:[(u'references', u'#273 (1)', u'1', u)]
cmd:references, tkts#273 (1)
tkt_id:273, vals[[<bound method CommitHook?._cmdRefs of <main.CommitHook? inst
ance at 0x9c7a74c>>, u'1']]
Setting ticket:<trac.ticket.model.Ticket object at 0xa1c1d8c> spent: 1.0

I forgot to add that it looks exactly like the logmessage of the old working script when testing. (besides the 0x-numbers)

comment:4 follow-up: Changed 4 years ago by bobbysmith007

hrm... well, that looks like it should work (especially if it was matches the old one line for line).

Can I get a copy or screen shot of the weird MERGE message? Also just to make sure I understand:

  • The commit to the repository was successful
  • Your working copy did not correctly update to the latest new revision
  • What is your svn status after the half commit?
  • What happens when you svn update?
  • I assume this is perfectly repeatable on your end ? (ie: every commit behaves the same)

I am trying to duplicate this on my end at the moment (on a fresh svn repo)

Changed 4 years ago by AndersH

Merge error

Changed 4 years ago by AndersH

New try with a gif file and no space...

comment:5 in reply to: ↑ 4 Changed 4 years ago by AndersH

Replying to bobbysmith007:

Can I get a copy or screen shot of the weird MERGE message? Also just to make sure I understand:

  • The commit to the repository was successful

Yes.

  • Your working copy did not correctly update to the latest new revision

Yes.

  • What is your svn status after the half commit?

Don't know, not using command line subversion.

  • What happens when you svn update?

From the console window in Eclipse (first is commit, then separate update):

commit -m "References #273 (0.5)..." C:/Users/Anders/workspace/Swegon/dummy_test.txt
    Sending        Users/Anders/workspace/Swegon/dummy_test.txt
    Transmitting file data ...
    RA layer request failed
svn: Commit failed (details follow):
svn: MERGE of '/svn/trunk': 200 OK (https://gw.join.ideon.se:447)

update C:/Users/Anders/workspace/Swegon/dummy_test.txt -r HEAD --force
    G  C:/Users/Anders/workspace/Swegon/dummy_test.txt
    Updated to revision 493.
    ===== File Statistics: =====
    Merged: 1
  • I assume this is perfectly repeatable on your end ? (ie: every commit behaves the same)

Yes, at least two times. Going into the repository view and then manually overwriting the file from the repository makes the local copy ok.

I am trying to duplicate this on my end at the moment (on a fresh svn repo)

comment:6 Changed 4 years ago by bobbysmith007

I added some better error logging to the scripts (so you might wish to update like the last 10 lines of your file to match this revision).

You should try running the post commit script manually as below and post any errors you get.

From the trac-post-commit directory try executing:

./trac-post-commit.py -u 'youruser' -p '/var/trac/yourTracUrl' -r 493

I was able to execute mine and get no obvious errors, do you get any?

Thanks,
Russ

comment:7 Changed 4 years ago by bobbysmith007

This is the svn post-commit I am using, it might give you better logging?

#!/bin/bash
log() {
    while read data
    do
    echo "[$(date +'%T')] $data" | tee -a $LOG || continue
    done
}

set -e
REPOS="$1"
REV="$2"
CNAME=`basename "$REPOS"`
export LOGDIR="/var/log/commit-hooks"
LOG="${LOGDIR}/$CNAME.svn-post-commit.log"
mkdir -p "${LOGDIR}"

echo "`date +'%F'` in svn post commit : $REPOS : $REV" | log
MESSAGE=`svnlook log -r $REV $REPOS`
AUTHOR=`svnlook author -r $REV $REPOS`

if [ -z "$TRAC_ENV" ] && [ -e "/var/trac/$CNAME" ]; then
    export TRAC_ENV="/var/trac/$CNAME"
fi

echo "TracEnv:$TRAC_ENV Repo:$REPOS Rev:$REV Auth:$AUTHOR" | log

/usr/bin/python /path/to/your/trac-post-commit.py -p "$TRAC_ENV" -r "$REV" -u "$AUTHOR" -m "$MESSAGE" 2>&1 | log
echo "Done with trac: $?" | log

comment:8 Changed 3 years ago by anonymous

  • Resolution set to fixed
  • Status changed from new to closed

Sorry to bother you with the above. I had an urgent delivery problem and was not able to check more into this at that time, needed to get things out the door to the customer.

I found the error. I had executed the logging post-commit scripts as root on my debian machine for testing, and thus created a log-file owned by root not writeable by the www-data user. When checking in code to svn/apache the scripts was executed as www-data, and there was a "Permission denied" when opening the log/commithook.log file and the trac-post-commit-hook crashed with an IOError exception. (just as it should, just hard to debug this particular error ;-) Thanks for the help with the scripts anyway! /Anders H.

Add Comment

Modify Ticket

Action
as closed .
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from bobbysmith007. Next status will be 'closed'.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.