git-proj

Description

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.

test package

Why git-proj?

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 sub-commands

Click on the image above to see more details.

User Docs

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.

Installing

System requirements:

User requirements:

Download Locations:

test package

Select the latest version (any OS). The ones with 'RC' or 'test' (and timestamps) in the names are not "stable".

Download example:

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

Install Example:

sudo apt-get install ./$tPkg

Getting more usage help

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.

Source

https://github.com/TurtleEngr/gitproj


For Developers

The developer docs can be found at: test/dev-doc