summaryrefslogtreecommitdiffstats
path: root/EXAMPLES
blob: b454a32875cce806bcce332d9f1d785e045752ff (plain)
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
require 'git'

# needs read permission only

g = Git.open (working_dir = '.')
	(git_dir, index_file)

g.index
g.index.readable?
g.index.writable?
g.repo
g.dir

g.log   # returns array of Git::Commit objects
g.log.since('2 weeks ago')
g.log.between('v2.5', 'v2.6')
g.log.each {|l| puts l.sha }
g.blob('v2.5:Makefile').log.since('2 weeks ago')

g.object('HEAD^').to_s  # git show / git rev-parse
g.object('HEAD^').contents
g.object('v2.5:Makefile').size
g.object('v2.5:Makefile').sha

g.tree(treeish)
g.blob(treeish)
g.commit(treeish)

g.revparse('v2.5:Makefile')

g.branches # returns Git::Branch objects
g.branches.local
g.branches.remote
g.branches[:master].commit
g.branches['origin/master'].commit

g.grep('hello')  # implies HEAD
g.blob('v2.5:Makefile').grep('hello')
g.tag('v2.5').grep('hello', 'docs/')

g.diff(commit1, commit2).size
g.diff(commit1, commit2).stats
g.tree('v2.5').diff('v2.6').insertions
g.diff('gitsearch1', 'v2.5').path('lib/')
g.diff('gitsearch1', @git.tree('v2.5'))
g.diff('gitsearch1', 'v2.5').path('docs/').patch
g.tree('v2.5').diff('v2.6').patch

g.tree('v2.5').diff('v2.6').each do |file_diff|
  puts file_diff.path
  puts file_diff.patch
  puts file_diff.blob(:src).contents
end

g.config('user.name')  # returns 'Scott Chacon'
g.config # returns whole config hash

***** IMPLEMENTED *****

g.ls_files
g.ls_files(:stage => true)

g.tag # returns array of Git::Tag objects








# needs write permission


g = Git.init
  Git.init('project')
  Git.init('/home/schacon/proj', 
		{ :git_dir => '/opt/git/proj.git', 
		  :index_file => '/tmp/index'} )
	
g = Git.clone(URI, :name => 'name', :path => '/tmp/checkout'
	(git_dir, index_file)

g.config('user.name', 'Scott Chacon')
g.config('user.email', 'email@email.com')      

		  
***** IMPLEMENTED *****


g.add('.')
g.add([file1, file2])

g.remove('file.txt').and_file

g.commit('message')
g.commit_a('message')

g.reset # defaults to HEAD
g.reset_hard(Git::Commit)

g.branch('new_branch')
g.branch('new_branch').delete

g.checkout('new_branch')
g.checkout('new_branch', :create_branch => true)
g.checkout_b('new_branch')

g.merge('new_branch')
g.merge(Git::Branch)
g.merge(Git::Branch, Git::Branch)

g.fetch
g.fetch(Git::Repo)

g.pull
g.pull(Git::Repo, Git::Branch) # fetch and a merge

g.tag('tag_name') # returns Git::Tag

g.pack