git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 0/6] maintenance: use packaged systemd units

From
Max Gautier <mg@max.gautier.name>
Date
Mar 22, 2024, 22:11 UTC
Message-ID
<20240322221327.12204-1-mg@max.gautier.name>
In-Reply-To
<20240318153257.27451-1-mg@max.gautier.name>
* Distribute the systemd timers used by the `git maintenance start` with
  the systemd scheduler as part of git, rather than writing them in
  $XDG_CONFIG_HOME.

This allows users to override the units if they wish, and is more in-line with the usual practices of distribution for systemd units.

We also move away from using the random minute, and instead rely on systemd features to achieve the same goal (see patch 2). This allows us to go back to using unit templating for the timers. This is also a prerequisite to have static unit files.

Note that even if we really need more specific OnCalendar= settings for each timer, we should still do it that way, but instead distribute override alongside the template, for instance for weekly:

/usr/lib/systemd-user/git-maintenance@daily.timer.d/override.conf: [Timer] OnCalendar=<daily specific calendar spec>

The cleanup code for the units written in $XDG_CONFIG_HOME is adapted, and takes care of not removing legitimate user overrides, by checking the file start.

Testing: The simplest way to simulate having the units in /usr/lib is probably to copy them in /etc/systemd/user.

Changes since v1:
- Reorganization of the commits and their messages to try to address
  review comments
- Dropped the DON'T APPLY PATCH, added a TODO to the cleanup code
  instead
- Updated the git-maintenance tests to work with the new logic.
- Conditional installation of the units files
- Fixing some style/consistency issues
- template the systemd service file to use $(bindir)
Max Gautier (6):
  maintenance: use systemd timers builtin randomization
  maintenance: use packaged systemd units
  maintenance: simplify systemctl calls
  maintenance: cleanup $XDG_CONFIG_HOME/systemd/user
  maintenance: update systemd scheduler docs
  maintenance: update tests for systemd scheduler
 Documentation/git-maintenance.txt        |  33 ++-
 Makefile                                 |   5 +
 builtin/gc.c                             | 298 ++++-------------------
 config.mak.uname                         |  10 +
 systemd/user/git-maintenance@.service.in |  17 ++
 systemd/user/git-maintenance@.timer      |  12 +
 t/t7900-maintenance.sh                   |  50 ++--
 7 files changed, 126 insertions(+), 299 deletions(-)
 create mode 100644 systemd/user/git-maintenance@.service.in
 create mode 100644 systemd/user/git-maintenance@.timer
Range-diff against v1:
1:  ea54a6e50e < -:  ---------- maintenance: package systemd units
2:  b29dbb9fdd < -:  ---------- maintenance: use packaged systemd units
3:  47bd6712b8 < -:  ---------- maintenance: add fixed random delay to systemd timers
-:  ---------- > 1:  42d88c7f81 maintenance: use systemd timers builtin randomization
-:  ---------- > 2:  18d51b1dd1 maintenance: use packaged systemd units
-:  ---------- > 3:  3aa7446e95 maintenance: simplify systemctl calls
-:  ---------- > 4:  daff7b4d60 maintenance: cleanup $XDG_CONFIG_HOME/systemd/user
4:  fac57db55e ! 5:  5f6a8e141f maintenance: update systemd scheduler docs
    @@ Metadata
      ## Commit message ##
         maintenance: update systemd scheduler docs
     
    +    The `git maintenance` systemd scheduler no longer writes units in
    +    $XDG_CONFIG_HOME.
    +
    +    Describe the new behavior.
    +    Instead of explaining manual ways to modify the timer, suggest the
    +    systemd standard tool: `systemctl edit`.
    +
         Signed-off-by: Max Gautier <mg@max.gautier.name>
     
      ## Documentation/git-maintenance.txt ##
5:  d888fbd0c3 < -:  ---------- DON'T APPLY YET: maintenance: remove cleanup code
-:  ---------- > 6:  4d4bcd6233 maintenance: update tests for systemd scheduler
-- 
2.44.0
Next: Max Gautier
Message 1 of 30 in “maintenance: use packaged systemd units”
  1. 0/6 maintenance: use packaged systemd unitsMax Gautier, Mar 22, 2024
  2. 4/6 maintenance: cleanup $XDG_CONFIG_HOME/systemd/userMax Gautier, Mar 22, 2024
  3. Kristoffer HaugsbakkMar 22, 2024
  4. Junio C HamanoMar 22, 2024
  5. Max GautierMar 23, 2024
  6. Phillip WoodMar 24, 2024
  7. Max GautierMar 25, 2024
  8. Phillip WoodMar 25, 2024
  9. Max GautierMar 27, 2024
  10. 2/6 maintenance: use packaged systemd unitsMax Gautier, Mar 22, 2024
  11. Eric SunshineMar 23, 2024
  12. Max GautierMar 23, 2024
  13. 3/6 maintenance: simplify systemctl callsMax Gautier, Mar 22, 2024
  14. Eric SunshineMar 22, 2024
  15. Max GautierMar 23, 2024
  16. 1/6 maintenance: use systemd timers builtin randomizationMax Gautier, Mar 22, 2024
  17. 5/6 maintenance: update systemd scheduler docsMax Gautier, Mar 22, 2024
  18. 6/6 maintenance: update tests for systemd schedulerMax Gautier, Mar 22, 2024
  19. Eric SunshineMar 22, 2024
  20. Max GautierMar 23, 2024
  21. Phillip WoodMar 24, 2024
  22. Eric SunshineMar 24, 2024
  23. phillip.wood123@gmail.comMar 25, 2024
  24. Max GautierMar 25, 2024
  25. phillip.wood123@gmail.comMar 25, 2024
  26. Max GautierMar 25, 2024
  27. Phillip WoodMar 25, 2024
  28. Max GautierMar 25, 2024
  29. Phillip WoodMar 25, 2024
  30. Max GautierMar 27, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.