Logging time in mercurial commit message doesn't work

Added by Omar Kohl over 6 years ago

I write 'closes #3 @1h30m' in a mercurial commit message and it doesn't log any time. The issue is closed (after having enabled the option in the configuration) but no time is logged. Maybe there is some option/configuration I have to enable? I wasn't able to find any proper instructions about this so I'm not sure. I freshly installed redmine a week ago so it should be the most recent version.

Replies (6)

RE: Logging time in mercurial commit message doesn't work - Added by Toshi MARUYAMA over 6 years ago

Parsing log is scm common operation.
I think this problem is fixed by #7630.

RE: Logging time in mercurial commit message doesn't work - Added by Omar Kohl over 6 years ago

In that issue the only thing mentioned is that time is logged, but wrongly. In my case no time is logged. That is what confuses me. I got Redmine 1.1.2.stable.5131 so it should be the latest release and it should incorporate this functionality right?

RE: Logging time in mercurial commit message doesn't work - Added by Toshi MARUYAMA over 6 years ago

I don't use this feature yet.
If you think this is bug, could you create new defect issue?

RE: Logging time in mercurial commit message doesn't work - Added by Omar Kohl over 6 years ago

First I want to make sure I'm doing nothing wrong. Maybe someone can confirm that it works fine without need for any special configuration.

RE: Logging time in mercurial commit message doesn't work - Added by Maciej Smoliński over 6 years ago

Solution

1) Actually, setting:

Administration > Settings > Repositories > "Activity for logged time" from "Default" to "Development"

should solve your problem :)

2) Remember that your email in ~/.gitconfig file should match the one you are registered with in redmine
To check your email:


    git config --get user.email


To set your email:

    locally (in project folder):
    git config user.email your@email.com

    or globally (anywhere):
    git config --global user.email your@email.com

that's because of a logic (problem?) in a redmine code..


What the problem is?

  1. When log_time(issue, time) method is called, then TimeEntry object is created.
  2. TimeEntry validates presence of :activity_id (TimeEntryActivity).
  3. But TimeEntryActivity ("Default"/"Development"/"Support") is not passed, because of if conditional in log_time_activity method ("Default"'s id is 0).
  4. Because no TimeEntryActivity object is set in TimeEntry, the TimeEntry object is not valid and because of that fact - not inserted into database at all

The code:

app/models/time_entry.rb :


    class TimeEntry < ActiveRecord::Base

      ...

      validates_presence_of ..., :activity_id, ...

      ...

    end

app/models/changeset.rb :


      def log_time(issue, hours)

        time_entry = TimeEntry.new

        ...

        time_entry.activity = log_time_activity unless log_time_activity.nil?

        ...

      end


app/models/changeset.rb :

      def log_time_activity

        if Setting.commit_logtime_activity_id.to_i > 0
          TimeEntryActivity.find_by_id(Setting.commit_logtime_activity_id.to_i)
        end

      end

Hope it solves your problem,
Maciej :)

RE: Logging time in mercurial commit message doesn't work - Added by michele corradin over 5 years ago

hi,
I did what is suggested and now time spent management works again but there are errors in the incremental sum: it seems it doubles the result .. but not always.
Is there a way to make it reset and recalculate everything?
Thanks
Michele

(1-6/6)