I manage a pretty disparate cluster of servers. Lots of Ubuntu VMs using Proxmox, a k8s cluster for Jupyter notebooks, and some old bare metal one-offs (Solaris, etc). Though Debian based is probably by far the most common.

Right now I've inherited a spreadsheet listing OS versions and physical locations of each of the machines, some info on more stable VMs that handle key services (dns, chat, mail, web services, etc). Finally there are some VMs that belong to researchers who could be doing anything

I'm not alone in managing all this thank gourd, but I'm new here, so it is a chore every time a new CVE drops to go trawling around to check what software is installed where and what version it is.

Any ideas on how to implement a sort of queryable database of all the packages and their versions? I'm imagining a service that polls the individual nodes and fetches the information in whatever way is necessary for that system, then plops that info into a document db and presents it as a web app that lets people (me) do simple CRUD operations as well as add whatever context is relevant (last_checked, notes, location, history, etc).

PS. I definitely don't want to roll out a prescriptive one-size-fits-all deployment model to make the job of querying easier. I'm fine taking on the complexity if I can let the people using my cluster continue being freaky little weirdos. :)

[–] 1 point 1 week ago

Thanks for sharing your experience. I'd love to put up a tiny tiny frontend to share my versioned work, but so far my best options seem to be cgit (configuration appears to be a bit of a bear), and legit by icyphox (spelling) (which is a bit unrefined, but at least it's pretty easy to modify).

Lord help me if I end up trying to make own...

  • source
  • [–] 1 point 1 week ago

    Disclosure: I love git. I learned it along with vi and the GNU coreutils, etc, at my first job, so the roots run deep. When I think of programming, I think of git.

    That said, I can appreciate how it is unintuitive to people who don't really grok it. It is an incredibly powerful tool, but you have to really learn it on its own terms. You'll probably have to pick up a little graph theory, memorize a few kata to get yourself out of common problems (merge conflicts, interactive rebases, etc).

    I'm not sure how anything could replace it without also feeling lack-luster to people who are already good at git. Maybe we just need to keep adding more tooling and visualisation over top of it and let the power users at least be able to work at those lower levels if they choose to.

    I was going to say Git Butler looks like it might have been this, but taking a look at their page now and it seems like they've gone all-in on corporate sponsorships. :P

  • source
  •  

    Probably silly.

    Say I've got a remote repo that is only available sometimes, like a removable drive, and I want to add it as a remote, but I don't want to get an error each--

    Actually, maybe disregard... I was just poking about in the CLI and remembered that ofc I could add a named remote without adding its pushurl to my main remote like "origin". So it's actually easiest to just do like

    # Add the remote
    git clone --bare . /mnt/asdf/asdf
    git remote add usb /mnt/asdf/asdf
    
    # Push to it by name whenever
    git push usb
    

    Seems intuitive to me, but maybe I'm X/Ying it... how would other people go about having a "sometimes" available remote repo, where you want to track easily and efficiently keep track of all the git history?

    [–] 1 point 5 months ago* (last edited 5 months ago)

    Neat, but I don't like how it highlight the entire like if I change just one character on that line.

    Maybe there's a setting I'm missing, but I really like diff-so-fancy for legibility of changed lines.

    For example if I've got like these changes:

    ***
    a	2026-06-01 14:36:20.699016620 -0400
    +++ b	2026-06-01 14:36:21.842027381 -0400
    @@ -1,11 +1,10 @@
     foo
     bar
    -baz
    +bazz
     
     foo
    -bar
     baz
     
    -foo
    +bar
     bar
     baz
    

    difft shows me:

    size by side diff with entire lines highlighted in red or green

    but diff-so-fancy shows me:

    unified diff with word highlighting

    Imho it's easier to read the pertinent info in the latter, where you've got that attractive word diffing on changed lines.

    I do like the conditional side-by-side and unified diffing, though. That's huge.

  • source
  • [–] [S] 2 points 5 months ago

    Updated OP with what I came up with. I wasn't able to make use of $GIT_REFLOG_ACTION -- for some reason it was blank in every case, but reading the first line of the existing commit message, if it exists, does the trick.

    I do foresee a potential problem if you're doing like an interactive rebase for example, and you go to edit a commit message that starts like the default "Revert " style--that could be surprising... Maybe some other cases I haven't thought of too, but yeah, works for me. Thanks for pointing me in the right direction!

  • source
  • parent
  • context
  • [–] [S] 2 points 5 months ago* (last edited 5 months ago)

    Thanks that is a great start, and even better gives me an excuse to faff about with scripting. I'll share what I come up with!

    EDIT Oh interesting, in my debugging I found out that if you revert a revert now (git version 2.43.0) that the subject line reads "Reapply" instead of "Revert "Revert "..."""

  • source
  • parent
  • context
  •  

    Whenever I do a git revert I go into an edit session with the following pre-filled.

    Revert "wip: does this work?"
    
    This reverts commit ad21a2ae23166b3f3cddoooooooom94821e3cdb4.
    
    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    ...
    

    ...and so on.

    I like to use conventional commits, so I change this to revert: "wip: does this work?".

    Is there a way to get the initial template for the revert commit message to appear this way by default? Lowercase, and with a colon.


    UPDATE This is what I came up with

    #!/bin/bash
    
    COMMIT_MSG_FILE=$1
    
    old_subject_line=$(head -1 $COMMIT_MSG_FILE)
    
    # Not a revert
    if [[ ! "$old_subject_line" =~ ^Revert\ \" ]]
    then
        exit 0
    fi
    
    new_subject_line=$(echo $old_subject_line|sed 's/^Revert/revert:/')
    
    sed -i "1s/.*/$new_subject_line/" $COMMIT_MSG_FILE
    

    Curiously, the case where two "Reverts" in a row become a "Reapply" doesn't come up like I thought it would. Maybe it only happens if you use the default Revert "yada yada yada" subject line.

    view more: next ›