# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 26
# self = https://watcher.sour.is/conv/srjk4ha
Here’s an example of how git/GitHub doesn’t really delete stuff. In July, I deleted all branches of all repos on GitHub, because everything had moved to my own server in 2018. Example repo: https://github.com/vain/dwm-vain — nothing left but a pointer to the new repo. But this still works: https://github.com/vain/dwm-vain/blob/d5e94c08e479b3ed62fc1dff41a4b64b4623ec53/dwm.c#L2012
Here’s an example of how git/GitHub doesn’t really delete stuff. In July, I deleted all branches of all repos on GitHub, because everything had moved to my own server in 2018. Example repo: https://github.com/vain/dwm-vain — nothing left but a pointer to the new repo. But this still works: https://github.com/vain/dwm-vain/blob/d5e94c08e479b3ed62fc1dff41a4b64b4623ec53/dwm.c#L2012
Here’s an example of how git/GitHub doesn’t really delete stuff. In July, I deleted all branches of all repos on GitHub, because everything had moved to my own server in 2018. Example repo: https://github.com/vain/dwm-vain — nothing left but a pointer to the new repo. But this still works: https://github.com/vain/dwm-vain/blob/d5e94c08e479b3ed62fc1dff41a4b64b4623ec53/dwm.c#L2012
It’s not a big surprise if you know that “branches” are just labels of some commit objects. So, basically, GitHub doesn’t run garbage collection on its repos (“storage is cheap”, eh?).
It’s not a big surprise if you know that “branches” are just labels of some commit objects. So, basically, GitHub doesn’t run garbage collection on its repos (“storage is cheap”, eh?).
It’s not a big surprise if you know that “branches” are just labels of some commit objects. So, basically, GitHub doesn’t run garbage collection on its repos (“storage is cheap”, eh?).
Also, it’s surprisingly hard to really remove something from a git repo. Try it: Create a new branch, create a commit on it, then delete that branch and see what you have to do for git show $the_old_rev to no longer work. Spoiler: A simple git gc --aggressive --prune=now is not enough.
Also, it’s surprisingly hard to really remove something from a git repo. Try it: Create a new branch, create a commit on it, then delete that branch and see what you have to do for git show $the_old_rev to no longer work. Spoiler: A simple git gc --aggressive --prune=now is not enough.
Also, it’s surprisingly hard to really remove something from a git repo. Try it: Create a new branch, create a commit on it, then delete that branch and see what you have to do for git show $the_old_rev to no longer work. Spoiler: A simple git gc --aggressive --prune=now is not enough.
So my point is not “GitHub is evil, they never delete stuff”. This is really just a property of git itself. It might still come unexpected to some people.
So my point is not “GitHub is evil, they never delete stuff”. This is really just a property of git itself. It might still come unexpected to some people.
So my point is not “GitHub is evil, they never delete stuff”. This is really just a property of git itself. It might still come unexpected to some people.
@movq Interesting 🤔
@movq Interesting 🤔
@movq @prologic That's why you're still able to recover from mistakes with the – what I consider lowlevel – git reflog. I actually had to it once or twice in my life. Worked extremely well. :-)
@lyse Oh, I had to use reflog way more often than that. 🤣 Actually, this is one of the reasons why I like git: You can easily recover from *a lot* of mistakes, you just have to know which rev it was. Git hardly ever deletes anything. This is great when working locally, but might be a bit of a surprise once you publish things.
@lyse Oh, I had to use reflog way more often than that. 🤣 Actually, this is one of the reasons why I like git: You can easily recover from *a lot* of mistakes, you just have to know which rev it was. Git hardly ever deletes anything. This is great when working locally, but might be a bit of a surprise once you publish things.
@lyse Oh, I had to use reflog way more often than that. 🤣 Actually, this is one of the reasons why I like git: You can easily recover from *a lot* of mistakes, you just have to know which rev it was. Git hardly ever deletes anything. This is great when working locally, but might be a bit of a surprise once you publish things.
Actually, I might just be an idiot. The GitHub repo still has all the *tags*, so the commit I mentioned is still reachable … 🤦 Oh god, no, I’m not going to clean that up now. That’s a lot of work, because all the repos have been “archived” (you cannot un-archive them through the API, only through manual clicks in the browser).
Actually, I might just be an idiot. The GitHub repo still has all the *tags*, so the commit I mentioned is still reachable … 🤦 Oh god, no, I’m not going to clean that up now. That’s a lot of work, because all the repos have been “archived” (you cannot un-archive them through the API, only through manual clicks in the browser).
Actually, I might just be an idiot. The GitHub repo still has all the *tags*, so the commit I mentioned is still reachable … 🤦 Oh god, no, I’m not going to clean that up now. That’s a lot of work, because all the repos have been “archived” (you cannot un-archive them through the API, only through manual clicks in the browser).
@movq So, other commits can't be reached anymore, they were swept away by Github? You could write a script to parse all the HTML (hopefully it's not a total JS disaster) and automate it this way. Or just have a look at this, I didn't try it though: https://github.com/sb15895/GH_Classroom_scripts
@lyse Good point. Some other commits (that are not reachable via any of the tags) *can* still be reached, like this one: https://github.com/vain/dwm-vain/commit/d919d6e2d751f28a52b9f17c45242aa957cd7484 But only through the GitHub web interface. If you clone the repo to your local machine, git show d919... just yields “bad object”.
@lyse Good point. Some other commits (that are not reachable via any of the tags) *can* still be reached, like this one: https://github.com/vain/dwm-vain/commit/d919d6e2d751f28a52b9f17c45242aa957cd7484 But only through the GitHub web interface. If you clone the repo to your local machine, git show d919... just yields “bad object”.
@lyse Good point. Some other commits (that are not reachable via any of the tags) *can* still be reached, like this one: https://github.com/vain/dwm-vain/commit/d919d6e2d751f28a52b9f17c45242aa957cd7484 But only through the GitHub web interface. If you clone the repo to your local machine, git show d919... just yields “bad object”.
@movq Ah, interesting!