.. _getting-started: --------------------------- Getting started with LFC --------------------------- Consider a simple example where we create a git repo: .. code-block:: console $ mkdir repo $ cd repo $ echo "A simple file" > something.txt $ git init $ git add something.txt $ git commit -a -m "Initial commit" Now you have a git repository ``repo/.git`` with one file called ``something.txt``. Let's also create a bare repo to demonstrate push/pull operations. .. code-block:: console $ cd .. $ git clone repo --bare $ cd repo Now let's create a binary file ``myfile.dat``. In this example it is not exactly "large" (1 MB), but since it's not text, git doesn't know much what to do with it. .. code-block:: console $ python -c "import os; open('myfile.dat', 'wb').write(os.urandom(1024*1024)" So now we can turn this repo into an LFC repo. We can then add the binary file using ``lfc`` instead of ``git`` .. code-block:: console $ lfc init $ lfc add myfile.dat Now the git status result from these two ``lfc`` commands is fairly extensive, and it gives you a pretty good idea how LFC works. The file ``myfile.dat.lfc`` contains metadata about the original file ``myfile.dat``, including a SHA-256 hash of that file's contents. The file ``.gitignore`` shows up because LFC has told git to ignore ``myfile.dat``. The main configuration for LFC is in ``.lfc/config``, and the actual data cache is in ``.lfc/cache``. The file ``.lfc/.gitignore`` ensures that the cache doesn't get the attention of git. .. code-block:: console $ git status -s A .gitignore A .lfc/.gitignore A .lfc/config A myfile.dat.lfc To share the large file, you'll need to create a remote. This is done separately from git's remotes. .. code-block:: console $ git remote add hub ../repo.git $ lfc remote add -d hub ../repo.git/cache $ git commit -a -m "Initialize LFC" Now you can push the large file to the hub using ``lfc push`` .. code-block:: console $ lfc push myfile.dat [local -> hub]