Error: Invalid change log message or author: Message must identify an artifact

From OSGeo
Jump to: navigation, search

Sample of the error seen:

commit -m "test" D:/svn/www/index.html
    Sending        D:/svn/www/index.html
    Transmitting file data ...
    A repository hook failed
svn: Commit failed (details follow):
svn: MERGE request failed on '/svn/mapbender/trunk/www'
svn: 'pre-commit' hook failed with error output: Invalid change log message or author: Message must identify an artifact, 
and the author may need to own the referenced 
artifact: txn 'r' in repository '/u1/sourcecast/data/adapter-svn/repositories/mapbender'

Why the error occurs and how to correct it

Ok, simple problem! Not so simple to understand though.... What it is referring to as "artifact" is a Project Tracker artifact. This is because the Message must name artifact setting in the configuration of the project is selected.

The control is available to the project owner and can be found by going to:

Edit project - https://[ project name ].osgeo.org/servlets/ProjectEdit

then

Tool configuration - https://[ project name ].osgeo.org/servlets/Configure?type=Project

Look for Message must name artifact which is probably checked. If you uncheck it, the error goes away.

There is also Committer must own artifact setting. This is similar but requires that the committer be assigned in the artifact as well as listing the artifact in the commit message log. This is not recommended unless you want absolute control of who is assigned the actual commit. In most open source projects, this slows the process down, but it is up to you if you want this. This setting can also cause the referenced error.

This setting forces you to reference an artifact from the project tracker. Create a task, defect, or enhancement in the project tracker. The artifact reference is looks something like SC23 and if you had a reference like this, the commit would have been ok with the settings you had. The artifact reference has to be surrounded with spaces to work. So SC23, does not work because of the comma next to it.

Why have this setting? During normal operations it is a good practice to allow only commits that reference an artifact. This links the code change to the reason and disposition as to why there is a code change. It helps also in that you don't need to be as verbose about the commit log because you are referencing a much richer log in the artifact. It also stops rough commits that may be done by folks in a hurry.

It does have a downside. The first is that you always need to reference something in the commit log. This is a bother that some would like to avoid. It is however a quick thing to do. This does help you figure out what might be happening in a personal branch. So someone working on some type of experiment or new example would have to create a task, defect, or enhancement before they could start work.

It is highly recommend to have the Message must name artifact setting on.