Re: How to watch files in a Git repository

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 06, 2022 at 06:04:11PM +0200, R. Diez wrote:

> If there is nothing of the sort, I could write my own script in Bash
> or Perl. I can handle cron and sending e-mails, but I do not know much
> about Git's internals. Could someone provide a few pointers about how
> to code this? I would expect there is some command to list commits,
> and all files touched by a particular commit. And there would be some
> way to interface with Bash or Perl, which does not need parsing
> complicated text output from Git.

This sounds kind of like git-multimail:

  https://github.com/git-multimail/git-multimail

That's usually triggered from a hook, I think, but it would not be hard
to trigger it with arbitrary segments of history.

You'd probably want to keep a "seen" ref of processed commits, and move
from that, like:

  # assuming you just care about one branch on the remote, but this
  # concept can be extended to several
  branch=refs/remotes/origin/main
  seen=refs/heads/seen

  git fetch

  # I don't know what git-multimail expects, but this is similar to what
  # a server-side receive hook would show
  echo "$(git rev-parse $seen) $(git rev-parse $branch) $branch" |
  some-git-multimail-command

  # now move your pointer forward for next time
  git update-ref $seen $branch

If multimail doesn't do what you want, then you can probably just script
around:

  git rev-list $seen..$branch -- $paths_you_care_about |
  git diff-tree --stdin -r --name-only --format="Commit %h touched: " -- $paths_you_care_about

depending how you want to format things.

-Peff



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux