-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
160 lines (134 loc) · 4.8 KB
/
index.html
File metadata and controls
160 lines (134 loc) · 4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Faws - a toy archival utility</title>
<link rel='icon' type='image/png' href='icon.png'>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Signika:wght@300..700&display=swap" rel="stylesheet">
<style>
body {
background-color: #282b30;
margin: 1.5em auto;
max-width: 60%;
}
.content {
margin: 40px auto;
max-width: 650px;
line-height: 1.6;
font-size: 18px;
color:#444;
padding: 0 10px;
color: #c0c0c0;
font-family: 'Signika';
}
h1, h2, h3 {
line-height: 1.2;
color: #e2e2e2;
}
a {
color: #c0c0c0;
}
p {
color: #cdcdcd;
font-weight: 300;
}
b {
color: #e2e2e2;
}
a:visited {
color: #90afb6;
}
pre {
background-color: #171718;
border-radius: 20px;
white-space: pre-line;
padding: 20px;
font-size: 12px;
}
</style>
</head>
<body>
<div class="content">
<a href="https://github.com/faws-vcs/faws">
<img class="logo" src="logo.png" />
</a>
<h3>A toy versioning utility</h3>
<p><b>Faws</b> is a version control system for backing up classic software.</p>
<h3>Install (Go method)</h3>
<p>(requires <a href="https://go.dev/dl/">Go</a> to be installed and configured.)</p>
<pre>
git clone https://github.com/faws-vcs/faws.git faws
cd faws
go install -v github.com/faws-vcs/faws
</pre>
<h3>Install (YOLO method)</h3>
<pre>
curl --proto '=https' --tlsv1.2 -H "Accept: application/vnd.github.v3.raw" -sSfL https://api.github.com/repos/faws-vcs/faws/git/blobs/d7779ee9ce6c54dde5b43cc40d5c9aa5ff6a2f80 | sh
</pre>
<hr/>
<h3>Links</h3>
<a href="https://github.com/faws-vcs/faws">GitHub repository</a><br/>
<a href="https://github.com/faws-vcs/faws/releases/latest">Downloads</a><br/>
<!-- <a href="https://snapcraft.io/faws">
<img alt="Get it from the Snap Store" src=https://snapcraft.io/en/dark/install.svg />
</a> -->
<hr/>
<h3>Familiar design</h3>
<p>Just like <a href="https://git-scm.com/">Git</a>, Faws uses a content-addressable filesystem with snapshots to store changes. You could use Faws to pull files from an online or locally-hosted repository, only downloading what you need.</p>
<h3>Faws is not the best for source code management</h3>
<p>While nothing is stopping you from using Faws to host code projects, it's <i>nowhere near</i> as well suited to that usecase as <a href="https://git-scm.com/">Git</a> or <a href="https://mercurial-scm.org/">Mercurial</a> are. Faws intentionally lacks much of the functionality of those systems.</p>
<p>Think of Faws as more of an infrastructure that a software installer would use, rather than infrastructure for hosting source code.</p>
<h3>Faws 💙 data hoarders</h3>
<p><b>Faws is oriented to the task of managing large collections of software,</b> especially large files that share duplicated contents across versions.</p>
<p>Host massive repositories without it eating up <sup>2</sup>⁄<sub>3</sub>rds of your CDN's storage space. Faws breaks up your files into regular chunks, which are deduplicated between files.</p>
<hr/>
<h3>Identities</h3>
<p>To frustrate any tampering attacks, all Faws commits are digitally signed with an <b>Identity keypair.</b></p>
<pre>
# create a signing identity
faws id create --nametag john.doe
# list your identities
faws id ls
</pre>
<h3>Your first commit</h3>
<p>Commits are tracked using <b>tags</b>, conceptually similar to Git tags or branches.</p>
<pre>
mkdir repo && cd repo <br/>
faws init
# add a named file
touch /tmp/named-file.txt
faws add named-file.txt /tmp/named-file.txt
# add a directory hierarchy to root
mkdir -p /tmp/directory/hierarchy
touch /tmp/directory/hierarchy/nested-file.txt
faws add "" /tmp/directory
# commit to the tag example-commit
faws commit -t my-tag
# show tags and associated commit hashes
faws tag
</pre>
<h3>Checking out</h3>
<p>With <code>checkout</code> you can export the contents of a commit, a tree, or an individual file.</p>
<pre>
faws checkout my-tag /tmp/tagged-snapshot
</pre>
<h3>Downloading a complete repository</h3>
<p>Because <code>faws pull</code> works with local files, it can also work with a plain HTTP index website.</p>
<pre>
faws clone https://example.com/repo/ download-repo
</pre>
<h3>Downloading a partial repository</h3>
<p>Similar to checkout, you can use <code>shadow</code> to download only a specific tag, commit, or file hash from a local or a remote repository.</p>
<pre>
mkdir download-repo && cd download-repo
faws init https://example.com/repo/
# download the my-tag tag
faws pull --tag my-tag
# download the commit
faws pull my-tag
</pre>
</div>
</body>
</html>