Julia Evans
@b0rk.social.jvns.ca.ap.brid.gy
570 followers 0 following 690 posts
programming and exclamation marks I have DMs muted from people I don’t follow. [bridged from https://social.jvns.ca/@b0rk on the fediverse by https://fed.brid.gy/ ]
Posts Media Videos Starter Packs
b0rk.social.jvns.ca.ap.brid.gy
would any of you folks be interested in reading an explanation of Git's data model I'm working on? (with the goal of including it in Git's official documentation)

if so, reply to this and I'll DM you a link!
b0rk.social.jvns.ca.ap.brid.gy
git usage question: if you use `git pull` and `git push`, how do you usually use them?

possible answers include:

- just run `git push` and `git pull` with no arguments (other than --rebase or --ff-only etc)
- always specify remote/branch with `git push origin main` and `git pull origin main`
- […]
Original post on social.jvns.ca
social.jvns.ca
b0rk.social.jvns.ca.ap.brid.gy
@ddr oh to be clear my plan is to totally avoid referencing the concept of a DAG in any way, not to explain it with a metaphor :)
b0rk.social.jvns.ca.ap.brid.gy
I'm thinking of trying to add an explanation of Git's core data model (commits / branches / references) to Git's official documentation, but where should it go?

curious about where you would think to look for such a thing

here are the current docs: https://git-scm.com/docs
Git - Reference
git-scm.com
b0rk.social.jvns.ca.ap.brid.gy
I've been using a workflow for making Git's man pages clearer which is

1. Ask Git users for feedback on the existing man pages (using a somewhat janky custom tool I built)
2. Make changes based on that feedback
3. Propose the changes

it seems to be going well!

(2/?)
b0rk.social.jvns.ca.ap.brid.gy
related to the Git cheat sheet I mentioned last week https://git-scm.com/cheat-sheet, I'm thinking of making some changes to the official Git glossary (https://git-scm.com/docs/gitglossary), to make it easier to look up what terms like "object" or "reference" mean in Git

I need some test […]
Original post on social.jvns.ca
social.jvns.ca
b0rk.social.jvns.ca.ap.brid.gy
where this came from is that I made a Git cheat sheet a while back at https://wizardzines.com/git-cheat-sheet.pdf

and then I found out that the folks who make the official Git website are super open to contributions and thought "... wait, the website doesn't have a cheat sheet, I could just […]
Original post on social.jvns.ca
social.jvns.ca
b0rk.social.jvns.ca.ap.brid.gy
@hacks4pancakes if it's any consolation, as someone who's lived in Canada my entire life I still have no idea what units container sizes are likely to be in (it really depends on the kind of food that's in the container!) and would just try asking for a "small" or "medium" or something
b0rk.social.jvns.ca.ap.brid.gy
more "how do you use this git feature" questions: do you ever use `git reset --soft`? What do you use it for?

(note: --soft is not the default)
b0rk.social.jvns.ca.ap.brid.gy
if you're interested in helping with Project Improve Git Documentation, I'm still looking for beta readers! Here's a signup form: https://forms.gle/QP5NUcvPQV6W7DCJ9

I'd love signups from anyone who uses Git on the command line, isn't 100% comfortable with it, and who would be interested in […]
Original post on social.jvns.ca
social.jvns.ca
b0rk.social.jvns.ca.ap.brid.gy
@nafmo is the idea that you have only 1 change in progress at a time so you just use the `main` branch for your changes instead of putting them on a branch?
b0rk.social.jvns.ca.ap.brid.gy
@jasonkarns I think i’m missing something here, usually when I make an OSS contribution I create a new branch for my changes, so i would pull from the main branch and push to my feature branch (and my feature branch would have a different upstream from the main branch)

I guess you do something […]
Original post on social.jvns.ca
social.jvns.ca
b0rk.social.jvns.ca.ap.brid.gy
another slightly obscure git question: have you ever used the “pushremote“ option in Git so that you can push a branch to a different remote than you pull from? Why?
Reposted by Julia Evans
mastodon.mastodon.social.ap.brid.gy
Today, we’re ready to show you the upcoming quote posts feature in more detail. We’ve put together a blog post with examples of how quote posts will work on Mastodon, ahead of early access on our own servers next week 💬 Full launch to come, in Mastodon v4.5 […]
Original post on mastodon.social
mastodon.social
b0rk.social.jvns.ca.ap.brid.gy
more weird git stuff : I'm trying to explain why "git pull origin main" will merge `main` into the current branch, but 'git push origin main' will NOT push the current branch to `main` (instead AFAICT it pushes the local "main" branch to the remote "main", no matter what your current branch is) […]
Original post on social.jvns.ca
social.jvns.ca
b0rk.social.jvns.ca.ap.brid.gy
finally (after literally everyone else *) I got my print copy of The Secret Rules of the Terminal!

(* or I hope after literally everyone else, please send us a support email if you didn't get your preordered copy yet!)
The Secret Rules of the Terminal, by Julia Evans - The cover illustration depicts three people doing arcane terminal magic in a temple with a smoking censer in the background. Each of the three people has curly brown hair and light brown skin. They are all wearing dresses, billowing cloaks, and utility belts with keyboard symbols on them. The one on the left holds a palette of paints and a brush. The one on the right has a staff with a $ symbol on it and a starfish at the top. The one in the centre has a sword and is reading from a book whose cover says “>_” and “./”, which rests on a lectern with a smiling snake wrapped around it.
b0rk.social.jvns.ca.ap.brid.gy
meet the TTY driver

https://wizardzines.com/comics/meet-the-tty-driver/

(from "The Secret Rules of the Terminal", out now!)
the TTY driver is the most obscure part of the system

You almost never need to think about it, but when I’ve wanted to do something weird (like put a terminal in a web browser) understanding the driver is SO USEFUL
when you start your terminal emulator, it asks the OS to create a “pseudoterminal pair” which is a pair of two files

terminal emulator <-> TTY <-> TTY driver <-> TTY <-> program
a “TTY” is the program’s side of the pair

programs use it to:

    communicate with the terminal emulator by reading/writing bytes
    configure the TTY driver (more on the next page!)

Run tty fo see the current TTY!
the TTY driver is why Ctrl+C does the same thing relatively consistently

program: you press Ctrl+C, I send a signal!
well, unless the program tells me it wants the raw bytes!
some things the TTY driver is in charge of

(you might think “these are unrelated” and you’d be right)

    storing the terminal window’s size
    sending a SIGHUP signal when you close your terminal
    a basic mode for entering text called “canonical mode”
    pausing the output and confusing you when you press Ctrl+S
    tracking which process is in the “foreground” and sending what you type there
b0rk.social.jvns.ca.ap.brid.gy
for a long time I've been ignoring git GUI tools ("I can just use the command line! it's fine!) but recently I've been needing to do a lot of repeated "edit the commit message of the commit 3 commits ago", and doing that with `git rebase -i` is annoying.

with lazygit I can just scroll to the […]
Original post on social.jvns.ca
social.jvns.ca