Tag: git-svn

  • Clone Wars Watchlist

    This morning, Devon tweeted a great git tip that shows how to create a git alias that produces more readable git logs. I decided I wanted to set this up.

    At work, we use a central Subversion repository, but a number of us use git-svn because we prefer git’s various local branch tools for development. I decided that it would be useful to extend this alias to also include the Subversion revision number if the commit has one. Unfortunately, this information (in the form of a Subversion URL) is stored in the commit body by git-svn, which may include other notes added by a developer. git-log exposes this text via the %b format specifier, but since we want to do some post-processing to extract just the revision number, we’ll need to set up a shell alias.

    Here’s the final version I’ve added to my ~/.aliases:

    alias glog='git log --graph --pretty=format:'"'"'%Cred%h%Creset%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%Cred%b%Creset'"'"' | perl -e '"'"'$log = do { local $/; <> }; $log =~ s/(>\e\[m\e\[31m)([^\n]*\n\| )*git-svn-id: svn\+ssh:\/\/[^\s\@]*\@(\d+) [0-9A-F-]+\n(\|| ) (\e\[m)/$1 r$3$5/gm; print "$log\n";'"'"' | less -RS'

    First you’ll note the weird quote escaping – we want the alias to be single-quoted (no expansion), but we want the arguments to the commands to also be single-quoted. That’s where the '"'"' trick comes in; see this explanation on StackOverflow. The format string is almost identical to Filipe’s solution, except for the addition of the body. The nasty Perl regular expression pulls out the revision number from that while also preserving the ANSI color escape sequences I inserted into the format string. Finally, we pass everything back to less for paging; -R makes sure it interprets the colors correctly, while -S disables line-wrapping.

    One unfortunate side effect of adding the post-processing is that you can’t pass the -p option to git log anymore, because Perl needs to read the whole log in for multiline matching (in case a developer had literal newlines in their commit body), and the diffs are large and could get caught in the regex filter.

    Hopefully you find this useful!

  • Sunspot

    A small Yorkshire Terrier lies in a pet bed on a green upholstered chair in a sunny living room.

    I wish I could nap like Pike naps.

  • The Muppets Meet Murderbot

    For the last year and a half or so Andrle and I have been having a ton of fun as part of an online book club put together by my friend Tanya. Unlike most book clubs where you all read the same thing, we all just share things we love that we’ve been reading.

    One recommendation that kept coming up was The Murderbot Diaries by Martha Wells, and I’m glad we finally ran with it and started reading them. We’ve been bingeing the last few weeks and they’re really, really great. Highly recommend (even though I’m only on Book 4.)

    Unsurprisingly another thing I’ve been reading about and thinking about a lot is the advent of Large Language Models, particularly as manifested by ChatGPT. My past work life as an NLP practitioner has me a mix of curious, envious, and highly suspicious of what these are and how they’re being used. In the short term I don’t mind using them as a toy that I can play with for the purpose of a joke, which is what this post is about.

    A recurring topic in this book club is how we might have the Muppets interpret a particular book, or how we might recast a movie with Muppets (but keep one human actor). This provides a lot of fun discussions, especially since I grew up regularly watching the classic Muppet movies on VHS recorded off of TV, and I really like musicals.

    That all brings me to some prompt iterating that I did to get ChatGPT to write the painfully cliché finale to a Muppet musical featuring Murderbot. (Apologies to both Henson and Wells.)

    Verse 1 (Murderbot):
    I used to be a killing machine,
    A rogue cyborg, feared and mean,
    But then I met the Muppets and Kermit,
    And learned what friendship truly meant.

    Verse 2 (Kermit):
    I'm just a simple frog, it's true,
    But I believe in friendship too,
    And when I met Murderbot, I knew,
    Together we could do something new.

    Chorus (All):
    We don't need to kill no more,
    Our friends are all we're fighting for,
    With Murderbot and Kermit side by side,
    We'll show the world what we stand for.

    Verse 3 (Murderbot):
    I never wanted to be a tool,
    But that's all humans see in me, it's cruel,
    I used to dream of breaking free,
    From their endless schemes and greed.

    Verse 4 (Kermit):
    It's true, I'm always happy-go-lucky,
    But I've been through some tough times that were quite yucky,
    But now with Murderbot and the gang,
    I know our friendship will never hang.

    Chorus (All):
    We don't need to kill no more,
    Our friends are all we're fighting for,
    With Murderbot and Kermit side by side,
    We'll show the world what we stand for.

    Bridge:
    The past is gone, the future bright,
    With friends like these, we'll win the fight,
    Our love and trust will guide us through,
    Together we'll see this journey through.

    Chorus (All):
    We don't need to kill no more,
    Our friends are all we're fighting for,
    With Murderbot and Kermit side by side,
    We'll show the world what we stand for.

    Outro:
    So let's raise our voices high,
    And let the world hear our battle cry,
    With Muppets and Murderbot side by side,
    We'll change the world and turn the tide.
    OpenAI. (2023, Mar. 16) [Iterative prompt conversation starting with “This Muppet movie is about a rogue cyborg traveling to different space stations and learning the power of friendship from the Muppets” and “I need some lyrics for the big finals. The music is big broadway style number about how the rogue cyborg doesn’t need to kill bad guys anymore because it has friends.” and then encouraging more dialogue between Kermit and Murderbot] https://chat.openai.com/

    Yes, I looked up recommendations on how to properly cite ChatGPT output.

    Overall the result was mildly amusing. I couldn’t get it to capture Murderbot’s signature style, presumably because while information about the novellas are in its model training, not enough text from the novellas are in there.

    I’m still not sure what useful things I could do with this kind of tool, but in the meantime, I can make it make silly songs.

  • Fox Ferocity

    Pike playing with a toy almost as big as he is.

  • Groomed Pike

    Tiny freshly groomed Yorkie sits on a teal couch wearing a monstera bow tie

    I love this little gentleman.

  • The Kale Wanter

    A small black and brown Yorkie stands on a cream rug in front of a brown cupboard begging for the bunch of lacinato kale in hand in the foreground.