JATothrim_v2

joined 1 month ago
[–] JATothrim_v2@programming.dev 1 points 6 days ago* (last edited 6 days ago) (1 children)

I'm not a copyright-lawyer, but I think there are implications on who has authored the code, so preserving this detail can be important. The fancy copy reduced my blame by +90% on the final result.

git blame output can be affected by e.g. ignoring white-space changes.

[–] JATothrim_v2@programming.dev 2 points 6 days ago (3 children)

Why are you copying a file?

I'm splitting a several thousand LOC file, which I don't have previous history in.

Like, maybe I’m just too familiar with git to see the forest for the trees, but what the heck are you doing over there?

Normally copying a file and committing transfers the authorship to you, because the copy just appears from nothing as a brand new file, never known to git. This would prevent browsing the per-line "who changed this last" history past the copy and obfuscate who wrote what and when.

(why the downvote?)

Additionally, A update can ship a new stock version of a config that has fancy new options and some deleted ones, and your modifications to it in /etc can conflict.

Arch can either backup your version as .pacsave or install the updated file as .pacnew. It's your task to merge your modifications to the updated configs, and these files can slowly pile-up over time until something breaks.

[–] JATothrim_v2@programming.dev 0 points 1 week ago (7 children)

Replicating git history for a file takes 1 merge commit and 3 commits, and this is propably one of the most complex workflows I have encountered:

(might not be correct...)
git checkout -b work
git mv file file.tmp
git commit
git checkout -b copy HEAD^
git mv file file2
git commit
git checkout work # can be skipped if you merge "work" instead.
git merge copy # "work" and "copy" must conflict, stage file.tmp and file2 and commit the result.
git mv file.tmp file
git commit
<git blame is identical for file and file2>

I would love to squash this into a single commit, but git doesn't have a copy operation or detection. :(

[–] JATothrim_v2@programming.dev 2 points 3 weeks ago

~~demons~~ ahem. data-races.

[–] JATothrim_v2@programming.dev 7 points 1 month ago (1 children)

For immutable types it is the same though.

The most twisted thing I learned is that all ints below a fixed limit share the same id() result, so

>>> x = 1
>>> id(x)
135993914337648
>>> y = 1
>>> id(y)
135993914337648

But then suddenly:

>>> x = 1000000
>>> id(x)
135993893250992
>>> y = 1000000
>>> id(y)
135993893251056

Using id() as a key in dict() may get you into trouble.