git-proj implements git sub-commands` for managing large binary files. Its setup and management is simpler than "git LFS", because it doesn't require a git server.
Have you ever had a developer commit their whole home directory into your project's git repository (on purpose or accidentally)? I have seen this. That includes their .ssh/ dir with their ssh keys. They better have passwords on their private keys! Someone making this mistake will likely have password-less keys. Yikes, what a security mess--all their keys, and shared keys, will need to be changed on all the systems they access.
Sure you can "delete" the mistake, but if it was pushed to your main git server, it will be in the repo forever, unless you do the work needed to rip it out. Yeah, there are tools that will do it, but they are not trivial, and your repo should be "locked" for a few hours until it is repaired. Maybe a faster solution: create a new repo, from a cleaned up HEAD on all active branches, and delete the compromised repo. Yeah, faster, but you've lost all your change history.
That is one scenario. This tool won't help with removing large binary files, but it can help with a more common scenario. Beginning developers don't realize they shouldn't be committing object files, exe files, log files, video files, or generated PDFs to the repository. Your snappy repo will start to become huge and slow. There are some good reasons for wanting to save and track those kind of files, but a git repo is not the place. So git-lfs was created. If you are OK with that solution and don't mind paying for the storage, you can skip this tool. I wanted something simpler to setup and with a more distributed approach. This tool is a start down that path.
The main inspiration for this git-proj tool came from my desire to use git to version video projects. But video files are HUGE, yet they don't change much. Since most video files are rendered from video editing tools, it is only important to version the video editor files, so that you can recreate a particular video file. Since rendering takes time you will want to save some of the rendered files. But there is usually no need to save every rendered version.
Currently this tool only supports git and large files on a local system. The "remotes" can be setup on mounted drives, and they can be used to clone the files to other systems.
See the issues, milestone 2.0 tagged issues for future enhancements that will support remotes across a network.
git proj
- general help.git proj init
- initialize a local git-proj repo.git proj-remote
- initialize a new "remote repo" from
the local one.git proj push
- push files in raw/ to the remote repo
(and do a regular git push).git proj pull
- pull raw/ files from the remote repo
(and do a regular git pull).git proj status
- git status and status of binary files
in raw/ compared to the remote's raw/.git proj clone
- create a git workspace and raw/
workspace from a remote.git proj config
- Fix or change the git-proj
configuration files.git proj add
- TBD. Add files and symlinks to the top
raw/ directory.Click on the image above to see more details.
The user docs can be browsed online at: user-doc
I recommend you start with: git-proj
Then the Createagit-proj_Repo tutorial shows how to get started with the git-proj commands.
For a full understanding of all the configuration variable and their "levels", see gitproj Configuration Documentation.
OS: Any debian based OS. For example: Ubuntu, Debian, Mint, MX.
Packages: git (>=2.17), bash, coreutils (fmt, tr), gawk (awk), git-flow, libpod-markdown-perl (pod2markdown), openssh-client, openssh-server, perl (pod2html, pod2man, pod2usage), rsync, sed, tidy. (If you use the apt-get package manager to install, all of these packages will be installed when git-proj is installed.)
The git sub-command directory /usr/lib/git-core exists.
Have used more than just git clone
You have used the git CLI a lot (not just git in an IDE)
The stable versions can be found at: https://moria.whyayh.com/rel/released/software/own/git-proj/deb - when prompted, use guest/guest for User/Password.
The test packages (ones that have at least passed all tests) can be found at: https://moria.whyayh.com/rel/development/software/own/git-proj/deb
Select the latest version (any OS). The ones with 'RC' or 'test' (and timestamps) in the names are not "stable".
tVer=0.7.1-1
tPkg=git-proj-$tVer-mx-x86_64.deb
tUrl=https://moria.whyayh.com/rel/released/software/own/git-proj/deb
tOpt="--user=guest --password=guest"
wget $tOpt $tUrl/$tPkg
sudo apt-get install ./$tPkg
The user docs can be browsed online at: user-doc
After installation, html and markdown help files and tutorials can also be found at: /usr/share/doc/git-proj/user-doc/
Also you can get help with these commands:
man git-proj
- this will give you an overview of
git-proj
git proj -h
- output the overview AND usage help for ALL of
the git-proj sub-commands.
git proj [CMD] -h
- output the help for "git proj CMD". For
example: "git proj init -h"
git proj [CMD] -H usage
- this outputs just the short usage
help for "git proj CMD". For example: "git proj init -H usage". If a
command requires options, you can just type the command for the usage
help.
https://github.com/TurtleEngr/gitproj
The developer docs can be found at: test/dev-doc