All Projects → lionheart → Git Bigstore

lionheart / Git Bigstore

Licence: apache-2.0
Bigstore is a Git extension that helps you track big files in your repositories.

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Git Bigstore

Ts Tools
TypeScript Tools for Node.js
Stars: ✭ 162 (-10%)
Mutual labels:  tools
Exportsheetdata
Add-on for Google Sheets that allows sheets to be exported as JSON or XML.
Stars: ✭ 170 (-5.56%)
Mutual labels:  tools
Recsech
Recsech is a tool for doing Footprinting and Reconnaissance on the target web. Recsech collects information such as DNS Information, Sub Domains, HoneySpot Detected, Subdomain takeovers, Reconnaissance On Github and much more you can see in Features in tools .
Stars: ✭ 173 (-3.89%)
Mutual labels:  tools
Lc Finder
An image annotation and object detection tool written in C
Stars: ✭ 163 (-9.44%)
Mutual labels:  tools
Unity resources
A list of resources and tutorials for those doing programming in Unity.
Stars: ✭ 170 (-5.56%)
Mutual labels:  tools
Devsecops
🔱 Collection and Roadmap for everyone who wants DevSecOps.
Stars: ✭ 171 (-5%)
Mutual labels:  tools
Androidperformancetools
Android Performance Tools!
Stars: ✭ 159 (-11.67%)
Mutual labels:  tools
Trackman
Execute commands as a workflow.
Stars: ✭ 178 (-1.11%)
Mutual labels:  tools
Solcrypto
Solidity crypto libraries, ring signatures, proof of knowledge, packed signatures etc. with matching Python implementations for secp256k1 and (alt)BN-256
Stars: ✭ 170 (-5.56%)
Mutual labels:  tools
J2team Community
Join our group to see more
Stars: ✭ 172 (-4.44%)
Mutual labels:  tools
Hackthebox
Notes Taken for HTB Machines & InfoSec Community.
Stars: ✭ 167 (-7.22%)
Mutual labels:  tools
Awesome Vault Tools
Awesome tools around HashiCorp Vault
Stars: ✭ 167 (-7.22%)
Mutual labels:  tools
Lite Server
Lightweight node server
Stars: ✭ 2,137 (+1087.22%)
Mutual labels:  tools
Wardroom
A tool for creating Kubernetes-ready base operating system images.
Stars: ✭ 163 (-9.44%)
Mutual labels:  tools
Xcodeplugintool
🎧a easy way use plugins after Xcode upgraded
Stars: ✭ 174 (-3.33%)
Mutual labels:  tools
Symfony Bootstrapped
⚡️ Symfony with tools
Stars: ✭ 160 (-11.11%)
Mutual labels:  tools
Mobilehackersweapons
Mobile Hacker's Weapons / A collection of cool tools used by Mobile hackers. Happy hacking , Happy bug-hunting
Stars: ✭ 170 (-5.56%)
Mutual labels:  tools
Cv Translation
我叫CV翻译,因为我的精髓就是Ctrl + c 不用v (原名QTranser)
Stars: ✭ 180 (+0%)
Mutual labels:  tools
Bitcoin tools
Python Bitcoin tools
Stars: ✭ 175 (-2.78%)
Mutual labels:  tools
Coot
玩转 IFTTT 体验极客生活,互联网自动化神器【已经停止开发】
Stars: ✭ 172 (-4.44%)
Mutual labels:  tools

Version License Versions

git-bigstore is an extension to Git that helps you track big files. For technical details, check out the Wiki.

Requirements

  • Python 2.7+ for version < 2.0
  • Python 3.5+ for version 2.0+
  • An Amazon S3, Google Cloud Storage, or Rackspace Cloud account

Configuration

First, install git-bigstore on PyPi.

Python 3.5+:

pip install git-bigstore>=2.0

Python 2.7+:

pip install git-bigstore<=2.0

Finally, go to the directory root of your Git repo and initialize bigstore.

git bigstore init

At this point, you will be prompted for which backend you would like to use (Amazon S3, Google Storage, or Rackspace Cloudfiles) and your credentials. Once you've entered this information, your Git repository will be prepared to track big files. If a ".bigstore" configuration file already exists in your repository, you will not be prompted for backend credentials.

To specify filetypes to store remotely, add an entry to your .gitattributes. E.g., if you only want to store your big archive files in your backend, run this command in your repository root:

echo "*.zip filter=bigstore" > .gitattributes

After this, every time you stage a zip file, bigstore will transparently copy the file to ".git/bigstore/objects" and will replace the file contents (as stored in git) with relevant identifying information.

If you're storing large text files (or something else that is easily compressable), specify the "bigstore-compress" filter instead of the normal "bigstore" one. E.g.,

$ echo "*.txt filter=bigstore-compress" > .gitattributes

This will compress your file using bz2 before uploading to your backend, and will decompress after downloading.

git-bigstore won't automatically sync to your selected backend after a commit. To push changed files, just run:

$ git bigstore push

To pull down remote changes:

$ git bigstore pull

If uploading and downloading everything isn't your cup of tea, you can also specify the paths you care about to these commands. For example, let's say you just want to download the Word and PDF files in your repo. This is what you'd do:

$ git bigstore pull *.pdf *.doc

You can also view the upload and download history of any file tracked by bigstore.

$ git bigstore log tsd20130403.pdf
(946cc6) Sat Apr 13 21:52:21 2013 PDT: gs ← Dan Loewenherz <[email protected]>
(ebffdc) Fri Apr 12 11:00:39 2013 PDT: gs ← Dan Loewenherz <[email protected]>
(f9ffb5) Wed Apr 10 18:29:56 2013 PDT: gs → Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 18:28:42 2013 PDT: gs → Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 18:27:38 2013 PDT: gs → Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 17:55:00 2013 PDT: gs → Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 17:53:40 2013 PDT: gs → Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 17:49:49 2013 PDT: gs → Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 17:49:13 2013 PDT: gs → Dan Loewenherz <[email protected]>
(f9ffb5) Wed Apr 10 10:29:30 2013 PDT: gs ← Dan Loewenherz <[email protected]>
(95aeaf) Wed Apr 10 09:46:46 2013 PDT: gs ← Dan Loewenherz <[email protected]>

Backend-Specific Instructions

Amazon S3

You probably will want to set up an IAM user to manage the bucket you'll be using to upload your media. Here's an example user policy. You may want to change the resource names below if you want your buckets to be named differently than the IAM user accessing them. In the below example, the IAM user called "bigstore" will only be given access to the AWS S3 bucket called "bigstore". Name your user appropriately.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:AbortMultipartUpload",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::${aws:username}",
                "arn:aws:s3:::${aws:username}/*"
            ]
        }
    ]
}

But "INSERT X HERE" already exists...

I've been using git-media for a few days now, and I've observed that it breaks down because it violates the following guideline in the Git docs:

For best results, clean should not alter its output further if it is run twice ("clean→clean" should be equivalent to "clean"), and multiple smudge commands should not alter clean's output ("smudge→smudge→clean" should be equivalent to "clean").

This made it a bit tough to collaborate with multiple people, since Git would try to clean things that had already been cleaned, and smudge things that had already been smudged. No good!

git-annex is another alternative, but it's solving a different problem and its implementation is a bit less dependent on Git itself. As a result, you essentially have to learn a whole new set of commands to work with it. I wanted to create something with as minimal complexity as possible.

Copyright

Licensed under Apache 2.0. See LICENSE for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].