add walkthrough
This commit is contained in:
parent
c397e5a0f3
commit
cdfea4debc
2 changed files with 114 additions and 1 deletions
|
@ -11,6 +11,8 @@ versioned files, which is convenient for maintaining documents, Makefiles,
|
|||
etc that are associated with annexed files but that benefit from full
|
||||
revision control.
|
||||
|
||||
To get a feel for it, see the [[walkthrough]].
|
||||
|
||||
[[!sidebar content="""
|
||||
* **[[download]]**
|
||||
* [[install]]
|
||||
|
@ -19,7 +21,6 @@ revision control.
|
|||
* [[contact]]
|
||||
"""]]
|
||||
|
||||
|
||||
## sample use cases
|
||||
|
||||
<table>
|
||||
|
|
112
doc/walkthrough.mdwn
Normal file
112
doc/walkthrough.mdwn
Normal file
|
@ -0,0 +1,112 @@
|
|||
## creating a repository
|
||||
|
||||
This is very straightforward. Just tell it a description of the repository.
|
||||
|
||||
# mkdir ~/annex
|
||||
# cd ~/annex
|
||||
# git init
|
||||
# git annex init "my laptop"
|
||||
|
||||
## adding a remote
|
||||
|
||||
This could be a USB drive, or a sshfs or NFS mount to a file server, for
|
||||
example.
|
||||
|
||||
# sudo mount /media/usb
|
||||
# cd /media/usb
|
||||
# git clone ~/annex
|
||||
# cd annex
|
||||
# git annex init "portable USB drive"
|
||||
# git remote add home ~/annex
|
||||
# cd ~/annex
|
||||
# git remote add usbdrive /media/usb
|
||||
|
||||
There was nothing git-annex specific about that, except telling it the name
|
||||
of the new repository created on the USB drive.
|
||||
|
||||
Notice that both repos are set up as remotes of the other one. This lets
|
||||
either get annexed files from the other.
|
||||
|
||||
## adding files
|
||||
|
||||
# cd ~/annex
|
||||
# cp /tmp/big_file .
|
||||
# cp /tmp/debian.iso .
|
||||
# git annex add .
|
||||
add big_file ok
|
||||
add debian.iso ok
|
||||
# git commit -a -m added
|
||||
|
||||
Notice you commit at the end, this checks in git-annex's record of the
|
||||
files but not thier actual, large, content.
|
||||
|
||||
## transferring files around
|
||||
|
||||
Let's copy everything in the laptop's home annex to the USB drive.
|
||||
|
||||
# cd /media/usb/annex
|
||||
# git pull home master
|
||||
# git annex get .
|
||||
get big_file (copying from home...) ok
|
||||
get debian.iso (copying from home...) ok
|
||||
|
||||
Notice that you had to git pull from home first, this lets git-annex know
|
||||
what has changed in home, and so it knows about the files you added and
|
||||
can get them.
|
||||
|
||||
## transferring files: When things go wrong
|
||||
|
||||
After a while, you'll have serveral annexes, with different file contents.
|
||||
You don't have to try to keep all that straight; git-annex does
|
||||
[[location_tracking] for you. If you ask it to get a file and the drive
|
||||
or file server is not accessible, it will let you know what it needs to get
|
||||
it:
|
||||
|
||||
# git annex get video/hackity_hack_and_kaxxt.mov
|
||||
get video/_why_hackity_hack_and_kaxxt.mov (not available)
|
||||
I was unable to access these remotes: server
|
||||
Try making some of these repositories available:
|
||||
5863d8c0-d9a9-11df-adb2-af51e6559a49 -- my home file server
|
||||
58d84e8a-d9ae-11df-a1aa-ab9aa8c00826 -- portable USB drive
|
||||
ca20064c-dbb5-11df-b2fe-002170d25c55 -- backup SATA drive
|
||||
failed
|
||||
# sudo mount /media/usb
|
||||
# git annex get video/hackity_hack_and_kaxxt.mov
|
||||
get video/hackity_hack_and_kaxxt.mov (copying from usbdrive...) ok
|
||||
# git commit -a -m "got a video I want to rewatch on the plane"
|
||||
|
||||
## removing files
|
||||
|
||||
You can always drop files safely. Git-annex checks that some other annex
|
||||
has the file before removing it.
|
||||
|
||||
# git annex drop debian.iso
|
||||
drop iso/Debian_5.0.iso ok
|
||||
# git commit -a -m "freed up space"
|
||||
|
||||
## removing files: When things go wrong
|
||||
|
||||
Before dropping a file, git-annex wants to be able to look at other
|
||||
remotes, and verify that they still have a file. After all, it could
|
||||
have been dropped from them too. If the remotes are not mounted/available,
|
||||
you'll see something like this.
|
||||
|
||||
# git annex drop important_file other.iso
|
||||
drop important_file (unsafe)
|
||||
Could only verify the existence of 0 out of 1 necessary copies
|
||||
I was unable to access these remotes: usbdrive
|
||||
Try making some of these repositories available:
|
||||
58d84e8a-d9ae-11df-a1aa-ab9aa8c00826 -- portable USB drive
|
||||
ca20064c-dbb5-11df-b2fe-002170d25c55 -- backup SATA drive
|
||||
(Use --force to override this check, or adjust annex.numcopies.)
|
||||
failed
|
||||
drop other.iso (unsafe)
|
||||
Could only verify the existence of 0 out of 1 necessary copies
|
||||
No other repository is known to contain the file.
|
||||
(Use --force to override this check, or adjust annex.numcopies.)
|
||||
failed
|
||||
|
||||
Here you might --force it to drop `important_file` if you trust your backup.
|
||||
But `other.iso` looks to have never been copied to anywhere else, so if
|
||||
it's something you want to hold onto, you'd need to transfer it to
|
||||
some other repository before dropping it.
|
Loading…
Reference in a new issue