views:

349

answers:

2

I am trying to setup a build trigger for TeamCity using Mercurial as the VCS. Right now the trigger looks like:

+:/**

This trigger get fired when changesets are committed. However, I have TeamCity setup to tag each build in the VCS. The tagging process is firing the above build trigger so the build gets caught in a loop.

Can anyone suggest a VCS build trigger that will filter out the tagging process?

+1  A: 

Teamcity and the syntax above are foreign to me, but if you've got scripting capabilities you can check if a changeset is a tag-only changeset by doing something like this:

if [ "$(hg log -r tip --template '{files}')" = '.hgtags' ]; then
    echo tag only
else
    echo other stuff too
fi

Just swap out tip for whatever changeset you're about to act on, and change the echo statements to an exit, a make, or a hg tag as appropriate to either skip the build or just skip the creating of a new tag if the last changeset was only a tag.

Ry4an
Thanks Ry4an. Your script looking at the .hgtags file lead me to my solution of filtering out this file with a build trigger.
Matt Spradley
+4  A: 

Adding the trigger pattern:

-:/.hgtags

filters out the .hgtags file from the build trigger. This is the file that gets modified when the source is tagged by TeamCity. When this file is excluded tagging operations will not fire the build trigger.

Matt Spradley