Skip to content

Commit 26f9b9f

Browse files
committed
Merge remote-tracking branch 'upstream/master'
Conflicts: git/util.py
2 parents f0fcc07 + 833ac6e commit 26f9b9f

Some content is hidden

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

56 files changed

+2068
-1542
lines changed

Diff for: .appveyor.yml

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# CI on Windows via appveyor
2+
environment:
3+
GIT_DAEMON_PATH: "C:\\Program Files\\Git\\mingw64\\libexec\\git-core"
4+
CYGWIN_GIT_PATH: "C:\\cygwin\\bin;%GIT_DAEMON_PATH%"
5+
CYGWIN64_GIT_PATH: "C:\\cygwin64\\bin;%GIT_DAEMON_PATH%"
6+
7+
matrix:
8+
## MINGW
9+
#
10+
- PYTHON: "C:\\Python27"
11+
PYTHON_VERSION: "2.7"
12+
GIT_PATH: "%GIT_DAEMON_PATH%"
13+
- PYTHON: "C:\\Python34-x64"
14+
PYTHON_VERSION: "3.4"
15+
GIT_PATH: "%GIT_DAEMON_PATH%"
16+
- PYTHON: "C:\\Python35-x64"
17+
PYTHON_VERSION: "3.5"
18+
GIT_PATH: "%GIT_DAEMON_PATH%"
19+
- PYTHON: "C:\\Miniconda35-x64"
20+
PYTHON_VERSION: "3.5"
21+
IS_CONDA: "yes"
22+
GIT_PATH: "%GIT_DAEMON_PATH%"
23+
24+
# ## Cygwin
25+
# #
26+
# - PYTHON: "C:\\Miniconda-x64"
27+
# PYTHON_VERSION: "2.7"
28+
# IS_CONDA: "yes"
29+
# GIT_PATH: "%CYGWIN_GIT_PATH%"
30+
# - PYTHON: "C:\\Python34-x64"
31+
# PYTHON_VERSION: "3.4"
32+
# GIT_PATH: "%CYGWIN_GIT_PATH%"
33+
# - PYTHON: "C:\\Python35-x64"
34+
# PYTHON_VERSION: "3.5"
35+
# GIT_PATH: "%CYGWIN64_GIT_PATH%"
36+
37+
38+
install:
39+
- set PATH=%PYTHON%;%PYTHON%\Scripts;%GIT_PATH%;%PATH%
40+
41+
## Print configuration for debugging.
42+
#
43+
- |
44+
echo %PATH%
45+
uname -a
46+
where git git-daemon python pip pip3 pip34
47+
python --version
48+
python -c "import struct; print(struct.calcsize('P') * 8)"
49+
50+
- IF "%IS_CONDA%"=="yes" (
51+
conda info -a &
52+
conda install --yes --quiet pip
53+
)
54+
- pip install nose ddt wheel coveralls
55+
- IF "%PYTHON_VERSION%"=="2.7" (
56+
pip install mock
57+
)
58+
59+
## Copied from `init-tests-after-clone.sh`.
60+
#
61+
- |
62+
git submodule update --init --recursive
63+
git fetch --tags
64+
git tag __testing_point__
65+
git checkout master || git checkout -b master
66+
git reset --hard HEAD~1
67+
git reset --hard HEAD~1
68+
git reset --hard HEAD~1
69+
git reset --hard __testing_point__
70+
71+
## For commits performed with the default user.
72+
- |
73+
git config --global user.email "[email protected]"
74+
git config --global user.name "Travis Runner"
75+
76+
- pip install -e .
77+
78+
build: false
79+
80+
test_script:
81+
- nosetests -v --with-coverage
82+
83+
#on_success:
84+
# - IF "%PYTHON_VERSION%"=="3.4" (coveralls)

Diff for: .gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
git/test/fixtures/* eol=lf
2+
init-tests-after-clone.sh

Diff for: .travis.yml

+5-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ git:
1616
install:
1717
- git submodule update --init --recursive
1818
- git fetch --tags
19-
- pip install coveralls flake8 sphinx
19+
- pip install coveralls flake8 ddt sphinx
2020

2121
# generate some reflog as git-python tests need it (in master)
2222
- ./init-tests-after-clone.sh
@@ -29,10 +29,11 @@ install:
2929
- cat git/test/fixtures/.gitconfig >> ~/.gitconfig
3030
script:
3131
# Make sure we limit open handles to see if we are leaking them
32-
- ulimit -n 96
32+
- ulimit -n 110
3333
- ulimit -n
3434
- nosetests -v --with-coverage
35-
- flake8
36-
- cd doc && make html
35+
- if [ "$TRAVIS_PYTHON_VERSION" == '3.4' ]; then flake8; fi
36+
- if [ "$TRAVIS_PYTHON_VERSION" == '3.5' ]; then cd doc && make html; fi
37+
-
3738
after_success:
3839
- coveralls

Diff for: README.md

+46-15
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
11
## GitPython
22

3-
GitPython is a python library used to interact with git repositories, high-level like git-porcelain, or low-level like git-plumbing.
3+
GitPython is a python library used to interact with git repositories, high-level like git-porcelain,
4+
or low-level like git-plumbing.
45

5-
It provides abstractions of git objects for easy access of repository data, and additionally allows you to access the git repository more directly using either a pure python implementation, or the faster, but more resource intensive git command implementation.
6+
It provides abstractions of git objects for easy access of repository data, and additionally
7+
allows you to access the git repository more directly using either a pure python implementation,
8+
or the faster, but more resource intensive *git command* implementation.
69

7-
The object database implementation is optimized for handling large quantities of objects and large datasets, which is achieved by using low-level structures and data streaming.
10+
The object database implementation is optimized for handling large quantities of objects and large datasets,
11+
which is achieved by using low-level structures and data streaming.
812

913

1014
### REQUIREMENTS
1115

12-
GitPython needs the `git` executable to be installed on the system and available in your `PATH` for most operations. If it is not in your `PATH`, you can help GitPython find it by setting the `GIT_PYTHON_GIT_EXECUTABLE=<path/to/git>` environment variable.
16+
GitPython needs the `git` executable to be installed on the system and available
17+
in your `PATH` for most operations.
18+
If it is not in your `PATH`, you can help GitPython find it by setting
19+
the `GIT_PYTHON_GIT_EXECUTABLE=<path/to/git>` environment variable.
1320

1421
* Git (1.7.x or newer)
1522
* Python 2.7 to 3.5, while python 2.6 is supported on a *best-effort basis*.
1623

17-
The list of dependencies are listed in `./requirements.txt` and `./test-requirements.txt`. The installer takes care of installing them for you.
24+
The list of dependencies are listed in `./requirements.txt` and `./test-requirements.txt`.
25+
The installer takes care of installing them for you.
1826

1927
### INSTALL
2028

@@ -31,7 +39,7 @@ Both commands will install the required package dependencies.
3139
A distribution package can be obtained for manual installation at:
3240

3341
http://pypi.python.org/pypi/GitPython
34-
42+
3543
If you like to clone from source, you can do it like so:
3644

3745
```bash
@@ -45,7 +53,7 @@ git submodule update --init --recursive
4553
#### Leakage of System Resources
4654

4755
GitPython is not suited for long-running processes (like daemons) as it tends to
48-
leak system resources. It was written in a time where destructors (as implemented
56+
leak system resources. It was written in a time where destructors (as implemented
4957
in the `__del__` method) still ran deterministically.
5058

5159
In case you still want to use it in such a context, you will want to search the
@@ -54,19 +62,37 @@ codebase for `__del__` implementations and call these yourself when you see fit.
5462
Another way assure proper cleanup of resources is to factor out GitPython into a
5563
separate process which can be dropped periodically.
5664

65+
#### Windows support
66+
67+
For *Windows*, we do regularly test it on [Appveyor CI](https://www.appveyor.com/)
68+
but not all test-cases pass - you may help improve them by exploring
69+
[Issue #525](https://github.com/gitpython-developers/GitPython/issues/525).
70+
71+
#### Python 2.6
72+
73+
Python 2.6 is supported on best-effort basis; which means that it is likely to deteriorate over time.
74+
5775
### RUNNING TESTS
5876

59-
*Important*: Right after cloning this repository, please be sure to have executed the `init-tests-after-clone.sh` script in the repository root. Otherwise you will encounter test failures.
77+
*Important*: Right after cloning this repository, please be sure to have executed
78+
the `./init-tests-after-clone.sh` script in the repository root. Otherwise
79+
you will encounter test failures.
6080

61-
The easiest way to run test is by using [tox](https://pypi.python.org/pypi/tox) a wrapper around virtualenv. It will take care of setting up environnements with the proper dependencies installed and execute test commands. To install it simply:
81+
On *Windows*, make sure you have `git-daemon` in your PATH. For MINGW-git, the `git-daemon.exe`
82+
exists in `Git\mingw64\libexec\git-core\`; CYGWIN has no daemon, but should get along fine
83+
with MINGW's.
84+
85+
The easiest way to run tests is by using [tox](https://pypi.python.org/pypi/tox)
86+
a wrapper around virtualenv. It will take care of setting up environnements with the proper
87+
dependencies installed and execute test commands. To install it simply:
6288

6389
pip install tox
6490

6591
Then run:
6692

6793
tox
68-
69-
94+
95+
7096
For more fine-grained control, you can use `nose`.
7197

7298
### Contributions
@@ -79,7 +105,8 @@ Please have a look at the [contributions file][contributing].
79105
* [Questions and Answers](http://stackexchange.com/filters/167317/gitpython)
80106
* Please post on stackoverflow and use the `gitpython` tag
81107
* [Issue Tracker](https://github.com/gitpython-developers/GitPython/issues)
82-
* Post reproducible bugs and feature requests as a new issue. Please be sure to provide the following information if posting bugs:
108+
* Post reproducible bugs and feature requests as a new issue.
109+
Please be sure to provide the following information if posting bugs:
83110
* GitPython version (e.g. `import git; git.__version__`)
84111
* Python version (e.g. `python --version`)
85112
* The encountered stack-trace, if applicable
@@ -95,20 +122,24 @@ Please have a look at the [contributions file][contributing].
95122
* Finally, set the upcoming version in the `VERSION` file, usually be
96123
incrementing the patch level, and possibly by appending `-dev`. Probably you
97124
want to `git push` once more.
98-
125+
99126
### LICENSE
100127

101128
New BSD License. See the LICENSE file.
102129

103130
### DEVELOPMENT STATUS
104131

105132
[![Build Status](https://travis-ci.org/gitpython-developers/GitPython.svg)](https://travis-ci.org/gitpython-developers/GitPython)
133+
[![Build status](https://ci.appveyor.com/api/projects/status/0f3pi3c00hajlrsd/branch/master?svg=true&passingText=windows%20OK&failingText=windows%20failed)](https://ci.appveyor.com/project/Byron/gitpython/branch/master)
106134
[![Code Climate](https://codeclimate.com/github/gitpython-developers/GitPython/badges/gpa.svg)](https://codeclimate.com/github/gitpython-developers/GitPython)
107135
[![Documentation Status](https://readthedocs.org/projects/gitpython/badge/?version=stable)](https://readthedocs.org/projects/gitpython/?badge=stable)
136+
[![Stories in Ready](https://badge.waffle.io/gitpython-developers/GitPython.png?label=ready&title=Ready)](https://waffle.io/gitpython-developers/GitPython)
137+
[![Throughput Graph](https://graphs.waffle.io/gitpython-developers/GitPython/throughput.svg)](https://waffle.io/gitpython-developers/GitPython/metrics/throughput)
108138

109-
Now that there seems to be a massive user base, this should be motivation enough to let git-python return to a proper state, which means
139+
Now that there seems to be a massive user base, this should be motivation enough to let git-python
140+
return to a proper state, which means
110141

111142
* no open pull requests
112143
* no open issues describing bugs
113144

114-
[contributing]: https://github.com/gitpython-developers/GitPython/blob/master/README.md
145+
[contributing]: https://github.com/gitpython-developers/GitPython/blob/master/CONTRIBUTING.md

Diff for: doc/source/conf.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
# built documents.
5151
#
5252
# The short X.Y version.
53-
VERSION = open(os.path.join(os.path.dirname(__file__),"..", "..", 'VERSION')).readline().strip()
53+
with open(os.path.join(os.path.dirname(__file__),"..", "..", 'VERSION')) as fd:
54+
VERSION = fd.readline().strip()
5455
version = VERSION
5556
# The full version, including alpha/beta/rc tags.
5657
release = VERSION

Diff for: doc/source/index.rst

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ GitPython Documentation
99
:maxdepth: 2
1010

1111
intro
12-
whatsnew
1312
tutorial
1413
reference
1514
roadmap

Diff for: doc/source/intro.rst

+7-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Requirements
1515

1616
* `Python`_ 2.7 or newer
1717
Since GitPython 2.0.0. Please note that python 2.6 is still reasonably well supported, but might
18-
deteriorate over time.
18+
deteriorate over time. Support is provided on a best-effort basis only.
1919
* `Git`_ 1.7.0 or newer
2020
It should also work with older versions, but it may be that some operations
2121
involving remotes will not work as expected.
@@ -75,6 +75,12 @@ codebase for `__del__` implementations and call these yourself when you see fit.
7575
Another way assure proper cleanup of resources is to factor out GitPython into a
7676
separate process which can be dropped periodically.
7777

78+
Best-effort for Python 2.6 and Windows support
79+
----------------------------------------------
80+
81+
This means that support for these platforms is likely to worsen over time
82+
as they are kept alive solely by their users, or not.
83+
7884
Getting Started
7985
===============
8086

0 commit comments

Comments
 (0)