advent_of_code
git-filter-repo
advent_of_code | git-filter-repo | |
---|---|---|
4 | 50 | |
1 | 7,457 | |
- | - | |
8.4 | 0.0 | |
4 months ago | 2 days ago | |
Rust | Python | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
advent_of_code
-
[2022][Friendly Reminder] Don't commit your input files to Git
Caution: the method I used is not recommended. Use at your own risk, know what you're doing, and have plenty of backups, etc. That said, here are my notes.
-
-🎄- 2022 Day 9 Solutions -🎄-
Once I figured out how to elegantly move the tail using signum() in part 2 it became so much cleaner. Full code is on GitHub, but here's the core of it:
- -🎄- 2022 Day 6 Solutions -🎄-
-
-🎄- 2021 Day 6 Solutions -🎄-
Group the fish by their timer, which can be anything from 0 to 8. The neat part is the rotate_left to decrease the timers of each group. Fish with timer 0 will automatically end up at timer 8, and so the only thing left to do is adding another copy with timer 6. Core function: rust fn multiply(timers: Vec, generations: usize) -> usize { // Index equals timer value, so index 0 contains the count of fish with timer 0 let mut counts_by_timer = vec![0usize; 9]; timers.into_iter().for_each(|f| { counts_by_timer[f] += 1; }); for _ in 0..generations { // A left rotation represents the timer (=index) decreasing by 1. // The fish with timer 0 will not only produce new fish with timer 8, // but also reset their timer to 6 let count_of_fish_with_timer_0 = counts_by_timer[0]; counts_by_timer.rotate_left(1); counts_by_timer[6] += count_of_fish_with_timer_0; // == counts_by_timer[8] } counts_by_timer.into_iter().sum() } Full code at Github
git-filter-repo
-
Cleaning Your Git History: Safely Removing Sensitive Data
**WARNING**: git-filter-branch has a glut of gotchas generating mangled history rewrites. Hit Ctrl-C before proceeding to abort, then use an alternative filtering tool such as 'git filter-repo' (https://github.com/newren/git-filter-repo/) instead. See the filter-branch manual page for more details; to squelch this warning, set FILTER_BRANCH_SQUELCH_WARNING=1. Proceeding with filter-branch... Rewrite a3a48b09e282854c80bf4ad02a017e249e161fd8 (2/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 6e788e83a338e45b348d93d682b32c816ee2fbff (3/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 7a378a0145bce70bea213ca5f9062138544db5f2 (4/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 0637c9659623644cfceb35be10f2a1fe5c468e04 (5/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 6c421eb99adc6b987cff7f3cada31e9313638072 (6/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 98001e5b97270efa4a8ab5bd0452be56dd76883d (7/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 2ca4e161a4af2b8f38c46faf848fdbb3e550f23c (8/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Ref 'refs/heads/secret_keys' was rewritten.
-
(RE not sharing inputs) PSA: "deleting" and committing to git doesn't actually remove it
Yup you need https://github.com/newren/git-filter-repo Take a look at https://github.com/newren/git-filter-repo/blob/main/INSTALL.md for instructions
-
How I teach Git
git filter-repo: a third-party command actually, as a replacement to Git's own filter-branch, that allows rewriting the whole history of a repository to remove a mistakenly added file, or help extract part of the repository to another.
-
Merging old repos into a monolithic git repo archive
I needed to archive some old repositories into a monorepo and of course I gave myself the requirement of maintaining git history, in some way. I tried a couple of solutions but it wasn't until I stumbled upon the git-filter-repo project at https://github.com/newren/git-filter-repo and another article which I've since lost (which was badly documented anyway) that I was able to figure out how to do this.
-
Mass edit of .git/objects
Git objects are not designed to be changed, they are immutable blobs. This is not a problem if you are making a reader, but is a problem when you want to change things, tools like old git-filter-branch or the newer filter repo abstract all reference updating away for you
-
Question about Git LFS
Make sure your gitignore is setup right (GitHub has a repo of good defaults). If you messed that up, you could rewrite git history to remove the big stuff. Use git-filter-repo. Not sure how that works for LFS.
-
How to open source code from a private monorepo
git-filter-repo
-
How to Push Files Over 100MB to GitHub: A Step-by-Step Guide with Git Large File Storage (LFS)
Check out git filter repo https://github.com/newren/git-filter-repo
-
Large initial push.
I personally prefer git-bfg ( https://rtyley.github.io/bfg-repo-cleaner/ ) ... though git-filter-repo ( https://github.com/newren/git-filter-repo ) is quite popular. The difference for me was that git-bfg is JVM based and my work machine has Java on it while git-filter-repo is python based... and my work machine is without python.
- Is there a way to scrub certain info from a repo's history? I wanna make a repo public, but at one point I stored my API client credentials in the code. Presumably that makes it technically unsafe to ever share that repo. What to do?
What are some alternatives?
adventofcode - adventofcode.com solutions
bfg-repo-cleaner - Removes large or troublesome blobs like git-filter-branch does, but faster. And written in Scala
adventofcode - Advent of Code 2022 as part of getting back into Python https://adventofcode.com/
trufflehog - Find and verify secrets
Git - Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via GitGitGadget (https://gitgitgadget.github.io/). Please follow Documentation/SubmittingPatches procedure for any of your improvements.
josh - Just One Single History
gh-action-pypi-publish - The blessed :octocat: GitHub Action, for publishing your :package: distribution files to PyPI: https://github.com/marketplace/actions/pypi-publish
roadmap - GitHub public roadmap
git-internals-pdf - PDF on Git Internals
dione - Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.
caulking - Prevent leaks with gitleaks, and use tests to validate
git-crypt - Transparent file encryption in git