Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 33ebe7a

Browse filesBrowse files
committed
initial project
0 parents  commit 33ebe7a
Copy full SHA for 33ebe7a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner

64 files changed

+5703
-0
lines changed

‎CHANGES

Copy file name to clipboard
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
=======
2+
CHANGES
3+
=======
4+
5+
0.1.0
6+
=====
7+
initial release

‎LICENSE

Copy file name to clipboard
+30Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
Copyright (c) 2008, Michael Trier
2+
All rights reserved.
3+
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions
6+
are met:
7+
8+
* Redistributions of source code must retain the above copyright
9+
notice, this list of conditions and the following disclaimer.
10+
11+
* Redistributions in binary form must reproduce the above copyright
12+
notice, this list of conditions and the following disclaimer in the
13+
documentation and/or other materials provided with the distribution.
14+
15+
* Neither the name of the GitPython project nor the names of
16+
its contributors may be used to endorse or promote products derived
17+
from this software without specific prior written permission.
18+
19+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
25+
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+

‎MANIFEST.in

Copy file name to clipboard
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
include doc/*.html
2+
include doc/*.css

‎README

Copy file name to clipboard
+212Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
==========
2+
GitPython
3+
==========
4+
5+
GitPython is a python library used to interact with Git repositories.
6+
7+
GitPython is a port of the grit_ library in Ruby created by
8+
Tom Preston-Werner and Chris Wanstrath.
9+
10+
.. _grit: http://grit.rubyforge.org
11+
12+
The ``method_missing`` stuff was `taken from this blog post`_
13+
14+
.. _taken from this blog post: http://blog.iffy.us/?p=43
15+
16+
REQUIREMENTS
17+
============
18+
19+
* Git_ tested with 1.5.3.7
20+
* `Python Nose`_ - used for running the tests
21+
22+
.. _Git: http://git.or.cz/
23+
.. _Python Nose: http://code.google.com/p/python-nose/
24+
25+
INSTALL
26+
=======
27+
28+
python setup.py install
29+
30+
SOURCE
31+
======
32+
33+
GitPython's git repo is available on Gitorious, which can be browsed at:
34+
35+
http://gitorious.org/projects/git-python
36+
37+
and cloned from:
38+
39+
git://gitorious.org/projects/git-python.git
40+
41+
USAGE
42+
=====
43+
44+
GitPython provides object model access to your git repository. Once you have
45+
created a repository object, you can traverse it to find parent commit(s),
46+
trees, blobs, etc.
47+
48+
Initialize a Repo object
49+
************************
50+
51+
The first step is to create a `Repo` object to represent your repository.
52+
53+
>>> from git_python import *
54+
>>> repo = Repo.new("/Users/mtrier/Development/git-python")
55+
56+
In the above example, the directory `/Users/mtrier/Development/git-python` is my working
57+
repo and contains the `.git` directory. You can also initialize GitPython with a
58+
bare repo.
59+
60+
>>> repo = Repo.init_bare("/var/git/git-python.git")
61+
62+
Getting a list of commits
63+
*************************
64+
65+
From the `Repo` object, you can get a list of `Commit`
66+
objects.
67+
68+
>>> repo.commits()
69+
[<GitPython.Commit "207c0c4418115df0d30820ab1a9acd2ea4bf4431">,
70+
<GitPython.Commit "a91c45eee0b41bf3cdaad3418ca3850664c4a4b4">,
71+
<GitPython.Commit "e17c7e11aed9e94d2159e549a99b966912ce1091">,
72+
<GitPython.Commit "bd795df2d0e07d10e0298670005c0e9d9a5ed867">]
73+
74+
Called without arguments, `Repo.commits` returns a list of up to ten commits
75+
reachable by the master branch (starting at the latest commit). You can ask
76+
for commits beginning at a different branch, commit, tag, etc.
77+
78+
>>> repo.commits('mybranch')
79+
>>> repo.commits('40d3057d09a7a4d61059bca9dca5ae698de58cbe')
80+
>>> repo.commits('v0.1')
81+
82+
You can specify the maximum number of commits to return.
83+
84+
>>> repo.commits('master', 100)
85+
86+
If you need paging, you can specify a number of commits to skip.
87+
88+
>>> repo.commits('master', 10, 20)
89+
90+
The above will return commits 21-30 from the commit list.
91+
92+
The Commit object
93+
*****************
94+
95+
Commit objects contain information about a specific commit.
96+
97+
>>> head = repo.commits()[0]
98+
99+
>>> head.id
100+
'207c0c4418115df0d30820ab1a9acd2ea4bf4431'
101+
102+
>>> head.parents
103+
[<GitPython.Commit "a91c45eee0b41bf3cdaad3418ca3850664c4a4b4">]
104+
105+
>>> head.tree
106+
<GitPython.Tree "563413aedbeda425d8d9dcbb744247d0c3e8a0ac">
107+
108+
>>> head.author
109+
<GitPython.Actor "Michael Trier <mtrier@gmail.com>">
110+
111+
>>> head.authored_date
112+
(2008, 5, 7, 5, 0, 56, 2, 128, 0)
113+
114+
>>> head.committer
115+
<GitPython.Actor "Michael Trier <mtrier@gmail.com>">
116+
117+
>>> head.committed_date
118+
(2008, 5, 7, 5, 0, 56, 2, 128, 0)
119+
120+
>>> head.message
121+
'cleaned up a lot of test information. Fixed escaping so it works with subprocess.'
122+
123+
124+
You can traverse a commit's ancestry by chaining calls to ``parents``.
125+
126+
>>> repo.commits()[0].parents[0].parents[0].parents[0]
127+
128+
The above corresponds to ``master^^^`` or ``master~3`` in git parlance.
129+
130+
The Tree object
131+
***************
132+
133+
A tree recorda pointers to the contents of a directory. Let's say you want
134+
the root tree of the latest commit on the master branch.
135+
136+
>>> tree = repo.commits()[0].tree
137+
<GitPython.Tree "a006b5b1a8115185a228b7514cdcd46fed90dc92">
138+
139+
>>> tree.id
140+
'a006b5b1a8115185a228b7514cdcd46fed90dc92'
141+
142+
Once you have a tree, you can get the contents.
143+
144+
>>> contents = tree.contents
145+
[<GitPython.Blob "6a91a439ea968bf2f5ce8bb1cd8ddf5bf2cad6c7">,
146+
<GitPython.Blob "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391">,
147+
<GitPython.Tree "eaa0090ec96b054e425603480519e7cf587adfc3">,
148+
<GitPython.Blob "980e72ae16b5378009ba5dfd6772b59fe7ccd2df">]
149+
150+
This tree contains three ``Blob`` objects and one ``Tree`` object. The trees are
151+
subdirectories and the blobs are files. Trees below the root have additional
152+
attributes.
153+
154+
>>> contents = tree.contents[-2]
155+
<GitPython.Tree "e5445b9db4a9f08d5b4de4e29e61dffda2f386ba">
156+
157+
>>> contents.name
158+
'test'
159+
160+
>>> contents.mode
161+
'040000'
162+
163+
There is a convenience method that allows you to get a named sub-object
164+
from a tree.
165+
166+
>>> tree/"lib"
167+
<GitPython.Tree "c1c7214dde86f76bc3e18806ac1f47c38b2b7a30">
168+
169+
You can also get a tree directly from the repo if you know its name.
170+
171+
>>> repo.tree()
172+
<GitPython.Tree "master">
173+
174+
>>> repo.tree("c1c7214dde86f76bc3e18806ac1f47c38b2b7a30")
175+
<GitPython.Tree "c1c7214dde86f76bc3e18806ac1f47c38b2b7a30">
176+
177+
The Blob object
178+
***************
179+
180+
A blob represents a file. Trees often contain blobs.
181+
182+
>>> blob = tree.contents[-1]
183+
<GitPython.Blob "b19574431a073333ea09346eafd64e7b1908ef49">
184+
185+
A blob has certain attributes.
186+
187+
>>> blob.name
188+
'urls.py'
189+
190+
>>> blob.mode
191+
'100644'
192+
193+
>>> blob.mime_type
194+
'text/x-python'
195+
196+
>>> len(blob)
197+
415
198+
199+
You can get the data of a blob as a string.
200+
201+
>>> blob.data
202+
"from django.conf.urls.defaults import *\nfrom django.conf..."
203+
204+
You can also get a blob directly from the repo if you know its name.
205+
206+
>>> repo.blob("b19574431a073333ea09346eafd64e7b1908ef49")
207+
<GitPython.Blob "b19574431a073333ea09346eafd64e7b1908ef49">
208+
209+
LICENSE
210+
=======
211+
212+
New BSD License. See the LICENSE file.

‎VERSION

Copy file name to clipboard
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.1.0

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.