NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Working with Git Patches in Apple Mail (2023) (btxx.org)
johnrob 6 days ago [-]
Once I discovered how git apply can take diff files (or patch files) as input, I stopped using git stash in favor of plain old files. Easier to list and browse the contents of prior edits, also you can grep the files as method of search. I’ve even found myself copying and editing the diffs before applying.
OskarS 6 days ago [-]
That is a very neat trick, I agree.

I personally approaches stashes as undoable "clean up", and I never have anything really important that I want to save there. If I do have something like that, I just commit with a "WIP <some-descriptive-string>" message and don't push it, then a "git reset --mixed HEAD^" when I want to get back to it.

However, just FYI: you can "grep" your stashes really easily if you want to. just "git stash list -p" gives you the diffs for all the stashes, by default in "less" where you can search them, but you can pipe it to grep if you want. I somewhat frequently do that with "git log", if I want to know "when did this variable change?" or whatever, just "git log -p" to get the log with diffs in less, then search for whatever it was with a slash.

barbazoo 6 days ago [-]
Oh that’s clever, I’ll try that out. Looks like you could just do a git diff > file.patch.

Neat.

johnrob 6 days ago [-]
You’ll also want to familiarize with “git apply -3 <file name>”, for when a diff can’t be applied cleanly. It will try “harder” to merge (three way method) and if it still fails it invokes the conflict merge “UX”:

<<<<<<<<<

=========

>>>>>>>>>

smcameron 6 days ago [-]
There's also Neil Brown's "wiggle" program for applying patches that don't apply.

https://github.com/neilbrown/wiggle

although on debian based systems I think you can just "apt install wiggle"

johnisgood 6 days ago [-]
What does "applying patches that don't apply" mean exactly?

I know about wiggle, but I have not used it, to be honest.

smcameron 2 days ago [-]
It means that if you do "patch -p1 --dry-run < some.patch", and it complains that it doesn't apply, wiggle can sometimes apply it anyway, and also, if you do "patch -p1 < some.patch", and it partially applies but with rejected hunks, wiggle can try to apply the rejected hunks.
johannes1234321 6 days ago [-]
git diff an pipe works, but committing and then `git format-patch` can export multiple patches and then includes metadata (commit message, date, author, etc.) which can make reasoning about such files a lot easier. In a plain diff you only got filename as metadata.
d3ckard 6 days ago [-]
Thank you, will try. Useful bit of knowledge.
RaoulP 6 days ago [-]
That’s a great idea, and very timely for me.
teeray 6 days ago [-]
Maybe slightly O/T, but has anyone found a decent way to `git send-email` with email hosts that demand OAuth? (looking at you Outlook and Gmail)
ozarker 6 days ago [-]
I think you could set up postfix to smtp forward to those services. So it could handle the oauth2 and you wouldn’t need to configure your client
computerfriend 6 days ago [-]
p_wood 6 days ago [-]
I use an app password but https://github.com/AdityaGarg8/git-credential-email apparently supports OAuth with Gmail, yahoo and outlook
arthurmorgan123 5 days ago [-]
I tried this with Gmail and Outlook. Works flawlessly and also doesn't need to authenticate frequently. The Authen::SASL thing was a catch though.

git-send-email also has some quirks for Outlook which have been recently merged.

mathstuf 6 days ago [-]
I use msmtp with a tool from the oauth2-tools repo to do the rotation token dance. Need to register your own app with Google though.
ravetcofx 6 days ago [-]
Generating app passwords for those would work.
pm215 6 days ago [-]
Yeah, I use an app specific password with Gmail, like the setup suggested by https://git-send-email.io/#step-2

Exchange historically had a tendency to mangle emails sent through it (whitespace changes, line wrap, etc), which is obviously bad news for patchmails. I dunno if it's any better these days.

dmarinus 6 days ago [-]
davmail supports smtp through outlook(365)
ndegruchy 6 days ago [-]
Yeah, I used DAVMail with Emacs+MSMTP+MPOP+notmuch for ages. Works really well, the only occasional thing I had to do was reauthenticate the token, which pops up in a browser window.
palata 6 days ago [-]
I like doing it with aerc [1]. It's even possible to use aerc in parallel to another email client. Just open aerc for git-related emails, and that's it!

[1]: https://drewdevault.com/2022/07/25/Code-review-with-aerc.htm...

smcameron 6 days ago [-]
If you work with git and patches a lot, stgit is worth a look.

https://stacked-git.github.io

johnisgood 5 days ago [-]
At that point, why not just use Pijul or even Darcs?
kazinator 6 days ago [-]
View the e-mail raw in your browser, select all, copy, paste into git apply.

Then you don't need that message to be in a file-based inbox that is accessible from your git repo.

And in that case you are still likely going to have to copy and paste something to get the correct path.

sircastor 6 days ago [-]
It looks like Apple Mail has plugin support, I wonder if you could author a plugin that’d provide a button to apply the diff.
gitroom 6 days ago [-]
[dead]
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 21:30:00 GMT+0000 (Coordinated Universal Time) with Vercel.