gitti-backup 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Manifest.txt +1 -0
- data/README.md +77 -0
- data/bin/backup +17 -0
- data/lib/gitti/backup/backup.rb +22 -2
- data/lib/gitti/backup/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98528e760c07a1b0d66ddd120073ef829bce821a
|
4
|
+
data.tar.gz: b9e5e7e4c2cb3d88cac33b00874274623fb34a29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88be2d1aef4b657bdc49ea048c72cdd5fdaf1fcb39555302d19c7db118550597a64a1e83b8ff88a3d8114d26973f0b5da272e840d8ebc9f1eb379b05fcbdff8d
|
7
|
+
data.tar.gz: 2e51ed36028c50f21419bada59e72fed01d7e564a5a42c621073f2e42f128fe2a9fa257849be5253e479d88f73eaa109075aae3c1522d0b4a56b5e9e9f2f8a32
|
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -8,8 +8,70 @@ gitti-backup gem - (yet) another (lite) git backup command line script
|
|
8
8
|
* rdoc :: [rubydoc.info/gems/gitti-backup](http://rubydoc.info/gems/gitti-backup)
|
9
9
|
|
10
10
|
|
11
|
+
|
11
12
|
## Usage
|
12
13
|
|
14
|
+
### `backup` Command Line Tool
|
15
|
+
|
16
|
+
Use the `backup` command line tool to backup all repos listed in a "manifest" file (e.g. `repos.yml`, `code.yml`, `github.yml` or such). Example:
|
17
|
+
|
18
|
+
```
|
19
|
+
backup repos.yml # or
|
20
|
+
backup code.yml data.yml
|
21
|
+
```
|
22
|
+
|
23
|
+
In a nutshell backup will backup all repos by using
|
24
|
+
1. `git clone --mirror` or
|
25
|
+
2. `git remote update` (if the local backup already exists)
|
26
|
+
and store all bare repos (without workspace) in the `~/backup` directory.
|
27
|
+
|
28
|
+
|
29
|
+
#### Repos Manifest
|
30
|
+
|
31
|
+
For now only github repos are supported listed by
|
32
|
+
owner / organization. Example `repos.yml`:
|
33
|
+
|
34
|
+
``` yaml
|
35
|
+
sportdb:
|
36
|
+
- sport.db
|
37
|
+
- sport.db.sources
|
38
|
+
- football.db
|
39
|
+
|
40
|
+
yorobot:
|
41
|
+
- cache.csv
|
42
|
+
- sport.db.more
|
43
|
+
- football.db
|
44
|
+
- football.csv
|
45
|
+
|
46
|
+
openfootball:
|
47
|
+
- leagues
|
48
|
+
- clubs
|
49
|
+
```
|
50
|
+
|
51
|
+
Using `backup` with defaults this will result in:
|
52
|
+
|
53
|
+
```
|
54
|
+
~/backup
|
55
|
+
/sportdb
|
56
|
+
/sport.db.git
|
57
|
+
/sport.db.sources.git
|
58
|
+
/football.db.git
|
59
|
+
/yorobot
|
60
|
+
/cache.csv.git
|
61
|
+
/sport.db.more.git
|
62
|
+
/football.db.git
|
63
|
+
/football.csv.git
|
64
|
+
/openfootball
|
65
|
+
/leagues.git
|
66
|
+
/clubs.git
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
### Scripting
|
72
|
+
|
73
|
+
You can script your backup in ruby. Example:
|
74
|
+
|
13
75
|
|
14
76
|
``` ruby
|
15
77
|
require 'gitti/backup'
|
@@ -23,6 +85,21 @@ backup = GitBackup.new
|
|
23
85
|
backup.backup( GitRepoSet.read( './repos.yml' ) )
|
24
86
|
```
|
25
87
|
|
88
|
+
or
|
89
|
+
|
90
|
+
``` ruby
|
91
|
+
require 'gitti/backup'
|
92
|
+
|
93
|
+
## step 1: setup the root backup directory
|
94
|
+
## 1) use custom directory e.g. /backups
|
95
|
+
## 2) auto-add a daily directory e.g. /backups/2020-09-27
|
96
|
+
backup = GitBackup.new( '/backups', daily: true )
|
97
|
+
|
98
|
+
backup.backup( GitRepoSet.read( './repos.yml' ) )
|
99
|
+
```
|
100
|
+
|
101
|
+
|
102
|
+
|
26
103
|
That's all for now.
|
27
104
|
|
28
105
|
|
data/bin/backup
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
###################
|
4
|
+
# DEV TIPS:
|
5
|
+
#
|
6
|
+
# For local testing run like:
|
7
|
+
#
|
8
|
+
# ruby -Ilib bin/backup
|
9
|
+
#
|
10
|
+
# Set the executable bit in Linux. Example:
|
11
|
+
#
|
12
|
+
# % chmod a+x bin/backup
|
13
|
+
#
|
14
|
+
|
15
|
+
require 'gitti/backup/base'
|
16
|
+
|
17
|
+
Gitti::GitBackup::Tool.main
|
data/lib/gitti/backup/backup.rb
CHANGED
@@ -4,16 +4,35 @@ module Gitti
|
|
4
4
|
|
5
5
|
class GitBackup
|
6
6
|
|
7
|
-
|
7
|
+
class Tool ## nested class
|
8
|
+
def self.main( args=ARGV )
|
9
|
+
backup = GitBackup.new
|
10
|
+
args.each do |arg|
|
11
|
+
backup.backup( GitRepoSet.read( arg ))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end ## nested class Tool
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
def initialize( root= '~/backup', daily: false )
|
8
19
|
@root = File.expand_path( root )
|
9
20
|
pp @root
|
10
21
|
|
11
22
|
## use current working dir for the log path; see do_with_log helper for use
|
12
23
|
@log_path = File.expand_path( '.' )
|
13
24
|
pp @log_path
|
25
|
+
|
26
|
+
@daily = daily
|
14
27
|
end
|
15
28
|
|
16
29
|
|
30
|
+
## auto-add "daily" date folder / dir
|
31
|
+
## e.g. 2015-11-20 using Date.today.strftime('%Y-%m-%d')
|
32
|
+
def daily=(value) @daily=value; end
|
33
|
+
|
34
|
+
|
35
|
+
|
17
36
|
def backup( repos )
|
18
37
|
count_orgs = 0
|
19
38
|
count_repos = 0
|
@@ -21,7 +40,8 @@ class GitBackup
|
|
21
40
|
total_repos = repos.size
|
22
41
|
|
23
42
|
## default to adding folder per day ## e.g. 2015-11-20
|
24
|
-
backup_path = "#{@root}
|
43
|
+
backup_path = "#{@root}"
|
44
|
+
backup_path << "/#{Date.today.strftime('%Y-%m-%d')}" if @daily
|
25
45
|
pp backup_path
|
26
46
|
|
27
47
|
FileUtils.mkdir_p( backup_path ) ## make sure path exists
|
data/lib/gitti/backup/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitti-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -54,7 +54,8 @@ dependencies:
|
|
54
54
|
version: '3.16'
|
55
55
|
description: gitti-backup - (yet) another (lite) git backup command line script
|
56
56
|
email: ruby-talk@ruby-lang.org
|
57
|
-
executables:
|
57
|
+
executables:
|
58
|
+
- backup
|
58
59
|
extensions: []
|
59
60
|
extra_rdoc_files:
|
60
61
|
- CHANGELOG.md
|
@@ -65,6 +66,7 @@ files:
|
|
65
66
|
- Manifest.txt
|
66
67
|
- README.md
|
67
68
|
- Rakefile
|
69
|
+
- bin/backup
|
68
70
|
- lib/gitti/backup.rb
|
69
71
|
- lib/gitti/backup/backup.rb
|
70
72
|
- lib/gitti/backup/base.rb
|