git-pandas 2.2.0__tar.gz → 2.3.0__tar.gz
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.
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.github/workflows/docs.yml +0 -4
- {git_pandas-2.2.0 → git_pandas-2.3.0}/CHANGELOG.md +14 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/LICENSE.md +1 -1
- {git_pandas-2.2.0 → git_pandas-2.3.0}/PKG-INFO +6 -2
- git_pandas-2.3.0/docs/requirements.txt +9 -0
- git_pandas-2.3.0/docs/source/CNAME +1 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/cache.rst +8 -13
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/conf.py +13 -3
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/contributors.rst +11 -11
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/index.rst +13 -36
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/project.rst +7 -20
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/repository.rst +7 -28
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/source/usecases.rst +15 -15
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/__init__.py +1 -0
- git_pandas-2.3.0/gitpandas/logging.py +98 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/project.py +103 -34
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/repository.py +393 -75
- git_pandas-2.3.0/mcp_server/README.md +22 -0
- git_pandas-2.3.0/mcp_server/server.py +344 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/pyproject.toml +9 -2
- git_pandas-2.3.0/tests/test_Repository/test_file_operations.py +161 -0
- git_pandas-2.2.0/docs/requirements.txt +0 -4
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.cursor/rules/project_overview.mdc +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.cursor/rules/pytest_standards.mdc +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.cursor/rules/python_standards.mdc +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.cursor/rules/sphinx_docs_standards.mdc +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.cursor/rules/testing.mdc +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.github/ISSUE_TEMPLATE.md +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.github/workflows/pypi-publish.yml +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.github/workflows/test-docs-build.yml +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.github/workflows/test-suite.yml +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/.gitignore +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/CONTRIBUTING.md +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/Makefile +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/README.md +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/Makefile +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/docs/make.bat +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/__init__.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/attributes.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/bus_analysis.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/cloud_repo.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/commit_history.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/cumulative_blame.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/definitions.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/file_change_rates.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/hours_estimate.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/img/cumulative_blame.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/img/cumulative_project_blame.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/img/githubblame.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/img/lifeline.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/img/stravalib_cumulative_blame.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/lifeline.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/parallel_blame.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/project_blame.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/punchcard.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/examples/repo_file_detail.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/cache.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/utilities/__init__.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/utilities/check_api.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/gitpandas/utilities/plotting.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/img/cumulative_blame.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/img/lifeline.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/img/punchcard.png +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/__init__.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/conftest.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Project/__init__.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Project/test_advanced.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Project/test_properties.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Repository/__init__.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Repository/test_advanced.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Repository/test_bus_factor.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Repository/test_file_detail.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Repository/test_properties.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_Repository/test_punchcard.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_cache.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_examples.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_utilities/test_check_api.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_utilities/test_init.py +0 -0
- {git_pandas-2.2.0 → git_pandas-2.3.0}/tests/test_utilities/test_plotting.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
v2.3.0
|
|
2
|
+
======
|
|
3
|
+
|
|
4
|
+
* Updated coverage file parsing to use coverage.py API instead of direct file parsing
|
|
5
|
+
* Added coverage>=5.0.0 as a core dependency
|
|
6
|
+
* Added a basic MCP server
|
|
7
|
+
* Added methods to `Repository` for getting files in repo, getting content of a file, and getting diffs of a revision
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
v2.2.1
|
|
11
|
+
======
|
|
12
|
+
|
|
13
|
+
* Docs CI bugfix
|
|
14
|
+
|
|
1
15
|
v2.2.0
|
|
2
16
|
======
|
|
3
17
|
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-pandas
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: A utility for interacting with data from git repositories as Pandas dataframes
|
|
5
|
-
|
|
5
|
+
Project-URL: Documentation, https://gitpandas.mcginniscommawill.com
|
|
6
|
+
Project-URL: Source, https://github.com/wdm0006/git-pandas
|
|
7
|
+
Project-URL: Issues, https://github.com/wdm0006/git-pandas/issues
|
|
8
|
+
Author: Will McGinnis
|
|
6
9
|
License: BSD
|
|
7
10
|
License-File: LICENSE.md
|
|
8
11
|
Keywords: analysis,data,git,pandas
|
|
@@ -10,6 +13,7 @@ Classifier: Development Status :: 3 - Alpha
|
|
|
10
13
|
Classifier: Intended Audience :: Developers
|
|
11
14
|
Classifier: Programming Language :: Python :: 3
|
|
12
15
|
Requires-Python: >=3.8
|
|
16
|
+
Requires-Dist: coverage>=5.0.0
|
|
13
17
|
Requires-Dist: gitpython>=1.0.0
|
|
14
18
|
Requires-Dist: numpy>=1.9.0
|
|
15
19
|
Requires-Dist: pandas>=2.0.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitpandas.mcginniscommawill.com
|
|
@@ -14,10 +14,10 @@ The caching system provides:
|
|
|
14
14
|
* Decorator-based caching for expensive operations
|
|
15
15
|
|
|
16
16
|
Available Cache Backends
|
|
17
|
-
|
|
17
|
+
------------------------
|
|
18
18
|
|
|
19
19
|
In-Memory Cache (EphemeralCache)
|
|
20
|
-
|
|
20
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
21
21
|
|
|
22
22
|
The default in-memory cache is ephemeral and will be cleared when the process ends:
|
|
23
23
|
|
|
@@ -36,7 +36,7 @@ The default in-memory cache is ephemeral and will be cleared when the process en
|
|
|
36
36
|
repo = Repository('/path/to/repo', cache_backend=cache)
|
|
37
37
|
|
|
38
38
|
Redis Cache (RedisDFCache)
|
|
39
|
-
|
|
39
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
40
40
|
|
|
41
41
|
For persistent caching across sessions, use Redis:
|
|
42
42
|
|
|
@@ -61,7 +61,7 @@ For persistent caching across sessions, use Redis:
|
|
|
61
61
|
repo = Repository('/path/to/repo', cache_backend=cache)
|
|
62
62
|
|
|
63
63
|
Using the Cache Decorator
|
|
64
|
-
|
|
64
|
+
-------------------------
|
|
65
65
|
|
|
66
66
|
The `@multicache` decorator can be used to cache method results:
|
|
67
67
|
|
|
@@ -79,7 +79,7 @@ The `@multicache` decorator can be used to cache method results:
|
|
|
79
79
|
pass
|
|
80
80
|
|
|
81
81
|
Configuration
|
|
82
|
-
|
|
82
|
+
-------------
|
|
83
83
|
|
|
84
84
|
Cache backends can be configured with various parameters:
|
|
85
85
|
|
|
@@ -95,27 +95,22 @@ RedisDFCache:
|
|
|
95
95
|
* Additional keyword arguments are passed to redis.StrictRedis
|
|
96
96
|
|
|
97
97
|
API Reference
|
|
98
|
-
|
|
98
|
+
-------------
|
|
99
99
|
|
|
100
100
|
.. currentmodule:: gitpandas.cache
|
|
101
101
|
|
|
102
|
-
.. autoclass:: CacheBackend
|
|
103
|
-
:members:
|
|
104
|
-
:undoc-members:
|
|
105
|
-
:show-inheritance:
|
|
106
|
-
:inherited-members:
|
|
107
|
-
:special-members: __init__, __getitem__, __setitem__, __delitem__, __contains__, __len__
|
|
108
|
-
|
|
109
102
|
.. autoclass:: EphemeralCache
|
|
110
103
|
:members:
|
|
111
104
|
:undoc-members:
|
|
112
105
|
:show-inheritance:
|
|
113
106
|
:inherited-members:
|
|
107
|
+
:special-members: __init__
|
|
114
108
|
|
|
115
109
|
.. autoclass:: RedisDFCache
|
|
116
110
|
:members:
|
|
117
111
|
:undoc-members:
|
|
118
112
|
:show-inheritance:
|
|
119
113
|
:inherited-members:
|
|
114
|
+
:special-members: __init__
|
|
120
115
|
|
|
121
116
|
.. autofunction:: multicache
|
|
@@ -15,6 +15,16 @@
|
|
|
15
15
|
import os
|
|
16
16
|
import sys
|
|
17
17
|
|
|
18
|
+
# Configure autodoc mock imports for documentation build
|
|
19
|
+
autodoc_mock_imports = [
|
|
20
|
+
'git', # Mock GitPython
|
|
21
|
+
'gitdb', # Mock GitDB
|
|
22
|
+
'git.repo', # Mock specific GitPython modules that might be imported directly
|
|
23
|
+
'git.repo.base',
|
|
24
|
+
'git.objects',
|
|
25
|
+
'git.refs'
|
|
26
|
+
]
|
|
27
|
+
|
|
18
28
|
# If extensions (or modules to document with autodoc) are in another directory,
|
|
19
29
|
# add these directories to sys.path here. If the directory is relative to the
|
|
20
30
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
@@ -72,9 +82,9 @@ author = "Will McGinnis"
|
|
|
72
82
|
# built documents.
|
|
73
83
|
#
|
|
74
84
|
# The short X.Y version.
|
|
75
|
-
version = "2.
|
|
85
|
+
version = "2.2.1"
|
|
76
86
|
# The full version, including alpha/beta/rc tags.
|
|
77
|
-
release = "2.
|
|
87
|
+
release = "2.2.1"
|
|
78
88
|
|
|
79
89
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
80
90
|
# for a list of supported languages.
|
|
@@ -168,7 +178,7 @@ html_static_path = ["_static"]
|
|
|
168
178
|
# Add any extra paths that contain custom files (such as robots.txt or
|
|
169
179
|
# .htaccess) here, relative to this directory. These files are copied
|
|
170
180
|
# directly to the root of the documentation.
|
|
171
|
-
|
|
181
|
+
html_extra_path = ['CNAME']
|
|
172
182
|
|
|
173
183
|
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
|
174
184
|
# using the given strftime format.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Contributing to Git-Pandas
|
|
2
|
-
|
|
2
|
+
==========================
|
|
3
3
|
|
|
4
4
|
We welcome contributions to Git-Pandas! Our goal is to make Git repository analysis simple, fast, and accessible to developers interested in data analysis.
|
|
5
5
|
|
|
6
6
|
Getting Started
|
|
7
|
-
|
|
7
|
+
---------------
|
|
8
8
|
|
|
9
9
|
1. Fork the repository on GitHub
|
|
10
10
|
2. Clone your fork locally:
|
|
@@ -24,10 +24,10 @@ Getting Started
|
|
|
24
24
|
5. Submit a pull request
|
|
25
25
|
|
|
26
26
|
Development Guidelines
|
|
27
|
-
|
|
27
|
+
----------------------
|
|
28
28
|
|
|
29
29
|
Code Style
|
|
30
|
-
|
|
30
|
+
~~~~~~~~~~
|
|
31
31
|
|
|
32
32
|
* Follow PEP 8 style guide
|
|
33
33
|
* Use 4 spaces for indentation
|
|
@@ -37,7 +37,7 @@ Code Style
|
|
|
37
37
|
* Add docstrings following Google style guide
|
|
38
38
|
|
|
39
39
|
Documentation
|
|
40
|
-
|
|
40
|
+
~~~~~~~~~~~~~
|
|
41
41
|
|
|
42
42
|
* Write detailed docstrings for all public APIs
|
|
43
43
|
* Include type hints for function parameters and return values
|
|
@@ -58,7 +58,7 @@ Testing
|
|
|
58
58
|
make coverage
|
|
59
59
|
|
|
60
60
|
API Design Principles
|
|
61
|
-
|
|
61
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
62
62
|
|
|
63
63
|
* Maintain feature parity between Repository and ProjectDirectory
|
|
64
64
|
* Include limit options for memory-intensive functions
|
|
@@ -66,10 +66,10 @@ API Design Principles
|
|
|
66
66
|
* Consider performance implications
|
|
67
67
|
|
|
68
68
|
Current Development Focus
|
|
69
|
-
|
|
69
|
+
-------------------------
|
|
70
70
|
|
|
71
71
|
High Priority
|
|
72
|
-
|
|
72
|
+
~~~~~~~~~~~~~
|
|
73
73
|
|
|
74
74
|
* Improve test coverage with proper unit tests
|
|
75
75
|
* Add diff functionality between revisions
|
|
@@ -77,7 +77,7 @@ High Priority
|
|
|
77
77
|
* Streamline documentation deployment
|
|
78
78
|
|
|
79
79
|
Feature Ideas
|
|
80
|
-
|
|
80
|
+
~~~~~~~~~~~~~
|
|
81
81
|
|
|
82
82
|
* File-level history tracking
|
|
83
83
|
* Cross-branch analytics
|
|
@@ -86,7 +86,7 @@ Feature Ideas
|
|
|
86
86
|
* Language analytics and insights
|
|
87
87
|
|
|
88
88
|
Development Setup
|
|
89
|
-
|
|
89
|
+
-----------------
|
|
90
90
|
|
|
91
91
|
1. Install development dependencies:
|
|
92
92
|
|
|
@@ -113,7 +113,7 @@ Development Setup
|
|
|
113
113
|
make docs
|
|
114
114
|
|
|
115
115
|
Questions?
|
|
116
|
-
|
|
116
|
+
----------
|
|
117
117
|
|
|
118
118
|
* Open an issue for bug reports or feature requests
|
|
119
119
|
* Join our discussions on GitHub
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
contain the root `toctree` directive.
|
|
5
5
|
|
|
6
6
|
Welcome to Git-Pandas Documentation
|
|
7
|
-
|
|
7
|
+
===================================
|
|
8
8
|
|
|
9
9
|
Git-Pandas is a powerful Python library that transforms Git repository data into pandas DataFrames, making it easy to analyze and visualize your codebase's history, contributors, and development patterns.
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ Git-Pandas is a powerful Python library that transforms Git repository data into
|
|
|
13
13
|
:align: center
|
|
14
14
|
|
|
15
15
|
Quick Start
|
|
16
|
-
|
|
16
|
+
-----------
|
|
17
17
|
|
|
18
18
|
Install Git-Pandas using pip:
|
|
19
19
|
|
|
@@ -22,7 +22,7 @@ Install Git-Pandas using pip:
|
|
|
22
22
|
pip install git-pandas
|
|
23
23
|
|
|
24
24
|
Basic Usage
|
|
25
|
-
|
|
25
|
+
~~~~~~~~~~~
|
|
26
26
|
|
|
27
27
|
Analyze a single repository:
|
|
28
28
|
|
|
@@ -42,7 +42,7 @@ Analyze multiple repositories:
|
|
|
42
42
|
project_info = project.general_information()
|
|
43
43
|
|
|
44
44
|
Key Features
|
|
45
|
-
|
|
45
|
+
------------
|
|
46
46
|
|
|
47
47
|
* **Repository Analysis**: Extract commit history, file changes, and blame information
|
|
48
48
|
* **Project Insights**: Calculate bus factor, development time, and contributor metrics
|
|
@@ -51,7 +51,7 @@ Key Features
|
|
|
51
51
|
* **Performance Optimization**: Optional caching support for memory-intensive operations
|
|
52
52
|
|
|
53
53
|
Core Components
|
|
54
|
-
|
|
54
|
+
---------------
|
|
55
55
|
|
|
56
56
|
The library is built around two main components:
|
|
57
57
|
|
|
@@ -60,11 +60,15 @@ The library is built around two main components:
|
|
|
60
60
|
|
|
61
61
|
For detailed information about these components, see the :doc:`repository` and :doc:`project` documentation.
|
|
62
62
|
|
|
63
|
-
Documentation
|
|
64
|
-
|
|
63
|
+
Documentation
|
|
64
|
+
-------------
|
|
65
|
+
|
|
66
|
+
Currently, the two main sources of documentation are the repository and project pages, which have the Sphinx docs from
|
|
67
|
+
those two classes, as well as instructions on how to create the objects. For detailed examples, check out the use-cases
|
|
68
|
+
page.
|
|
65
69
|
|
|
66
70
|
.. toctree::
|
|
67
|
-
:maxdepth:
|
|
71
|
+
:maxdepth: 1
|
|
68
72
|
:caption: Contents:
|
|
69
73
|
|
|
70
74
|
repository
|
|
@@ -74,7 +78,7 @@ Documentation Contents
|
|
|
74
78
|
contributors
|
|
75
79
|
|
|
76
80
|
Additional Resources
|
|
77
|
-
|
|
81
|
+
--------------------
|
|
78
82
|
|
|
79
83
|
* :ref:`genindex` - Complete API reference
|
|
80
84
|
* :ref:`modindex` - Module index
|
|
@@ -85,30 +89,3 @@ License
|
|
|
85
89
|
|
|
86
90
|
This project is BSD licensed (see LICENSE.md)
|
|
87
91
|
|
|
88
|
-
|
|
89
|
-
Detailed Documentation
|
|
90
|
-
======================
|
|
91
|
-
|
|
92
|
-
Currently, the two main sources of documentation are the repository and project pages, which have the Sphinx docs from
|
|
93
|
-
those two classes, as well as instructions on how to create the objects. For detailed examples, check out the use-cases
|
|
94
|
-
page.
|
|
95
|
-
|
|
96
|
-
Contents:
|
|
97
|
-
|
|
98
|
-
.. toctree::
|
|
99
|
-
:maxdepth: 2
|
|
100
|
-
|
|
101
|
-
repository
|
|
102
|
-
project
|
|
103
|
-
cache
|
|
104
|
-
usecases
|
|
105
|
-
contributors
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
Indices and tables
|
|
109
|
-
==================
|
|
110
|
-
|
|
111
|
-
* :ref:`genindex`
|
|
112
|
-
* :ref:`modindex`
|
|
113
|
-
* :ref:`search`
|
|
114
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Project Directory
|
|
2
|
-
|
|
2
|
+
=================
|
|
3
3
|
|
|
4
4
|
The ProjectDirectory class enables analysis across multiple Git repositories. It can aggregate metrics and insights from multiple repositories into a single output.
|
|
5
5
|
|
|
@@ -14,12 +14,12 @@ The ProjectDirectory class provides:
|
|
|
14
14
|
* Bus factor calculation
|
|
15
15
|
|
|
16
16
|
Creating a ProjectDirectory
|
|
17
|
-
|
|
17
|
+
---------------------------
|
|
18
18
|
|
|
19
19
|
You can create a ProjectDirectory object in three ways:
|
|
20
20
|
|
|
21
21
|
Directory of Repositories
|
|
22
|
-
|
|
22
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
23
23
|
|
|
24
24
|
Create a ProjectDirectory from a directory containing multiple repositories:
|
|
25
25
|
|
|
@@ -42,7 +42,7 @@ To check which repositories are included:
|
|
|
42
42
|
print(project.repo_name())
|
|
43
43
|
|
|
44
44
|
Explicit Local Repositories
|
|
45
|
-
|
|
45
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
46
46
|
|
|
47
47
|
Create a ProjectDirectory from a list of local repositories:
|
|
48
48
|
|
|
@@ -57,7 +57,7 @@ Create a ProjectDirectory from a list of local repositories:
|
|
|
57
57
|
)
|
|
58
58
|
|
|
59
59
|
Explicit Remote Repositories
|
|
60
|
-
|
|
60
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
61
61
|
|
|
62
62
|
Create a ProjectDirectory from a list of remote repositories:
|
|
63
63
|
|
|
@@ -72,7 +72,7 @@ Create a ProjectDirectory from a list of remote repositories:
|
|
|
72
72
|
)
|
|
73
73
|
|
|
74
74
|
Common Operations
|
|
75
|
-
|
|
75
|
+
-----------------
|
|
76
76
|
|
|
77
77
|
Here are some common operations you can perform with a ProjectDirectory object:
|
|
78
78
|
|
|
@@ -97,7 +97,7 @@ Here are some common operations you can perform with a ProjectDirectory object:
|
|
|
97
97
|
repo_info = project.repo_information()
|
|
98
98
|
|
|
99
99
|
API Reference
|
|
100
|
-
|
|
100
|
+
-------------
|
|
101
101
|
|
|
102
102
|
.. currentmodule:: gitpandas.project
|
|
103
103
|
|
|
@@ -109,16 +109,3 @@ API Reference
|
|
|
109
109
|
:special-members: __init__, __str__, __repr__
|
|
110
110
|
|
|
111
111
|
.. rubric:: Methods
|
|
112
|
-
|
|
113
|
-
.. autosummary::
|
|
114
|
-
:nosignatures:
|
|
115
|
-
~ProjectDirectory.commit_history
|
|
116
|
-
~ProjectDirectory.file_change_history
|
|
117
|
-
~ProjectDirectory.blame
|
|
118
|
-
~ProjectDirectory.cumulative_blame
|
|
119
|
-
~ProjectDirectory.branches
|
|
120
|
-
~ProjectDirectory.tags
|
|
121
|
-
~ProjectDirectory.revs
|
|
122
|
-
~ProjectDirectory.bus_factor
|
|
123
|
-
~ProjectDirectory.repo_information
|
|
124
|
-
~ProjectDirectory.repo_name
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Repository
|
|
2
|
-
|
|
2
|
+
==========
|
|
3
3
|
|
|
4
4
|
The Repository class provides a powerful interface for analyzing a single Git repository. It can be created from either a local or remote repository.
|
|
5
5
|
|
|
@@ -14,12 +14,12 @@ The Repository class offers methods for:
|
|
|
14
14
|
* Calculating file ownership and contribution patterns
|
|
15
15
|
|
|
16
16
|
Creating a Repository
|
|
17
|
-
|
|
17
|
+
---------------------
|
|
18
18
|
|
|
19
19
|
You can create a Repository object in two ways:
|
|
20
20
|
|
|
21
21
|
Local Repository
|
|
22
|
-
|
|
22
|
+
~~~~~~~~~~~~~~~~
|
|
23
23
|
|
|
24
24
|
Create a Repository from a local Git repository:
|
|
25
25
|
|
|
@@ -35,7 +35,7 @@ Create a Repository from a local Git repository:
|
|
|
35
35
|
The directory must contain a `.git` directory. Subdirectories are not searched.
|
|
36
36
|
|
|
37
37
|
Remote Repository
|
|
38
|
-
|
|
38
|
+
~~~~~~~~~~~~~~~~~
|
|
39
39
|
|
|
40
40
|
Create a Repository from a remote Git repository:
|
|
41
41
|
|
|
@@ -51,7 +51,7 @@ Create a Repository from a remote Git repository:
|
|
|
51
51
|
The repository will be cloned locally into a temporary directory. This can be slow for large repositories.
|
|
52
52
|
|
|
53
53
|
Common Operations
|
|
54
|
-
|
|
54
|
+
-----------------
|
|
55
55
|
|
|
56
56
|
Here are some common operations you can perform with a Repository object:
|
|
57
57
|
|
|
@@ -76,7 +76,7 @@ Here are some common operations you can perform with a Repository object:
|
|
|
76
76
|
repo_name = repo.repo_name
|
|
77
77
|
|
|
78
78
|
API Reference
|
|
79
|
-
|
|
79
|
+
-------------
|
|
80
80
|
|
|
81
81
|
.. currentmodule:: gitpandas.repository
|
|
82
82
|
|
|
@@ -87,30 +87,9 @@ API Reference
|
|
|
87
87
|
:inherited-members:
|
|
88
88
|
:special-members: __init__, __str__, __repr__
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
.. autosummary::
|
|
93
|
-
:nosignatures:
|
|
94
|
-
~Repository.commit_history
|
|
95
|
-
~Repository.file_change_history
|
|
96
|
-
~Repository.blame
|
|
97
|
-
~Repository.cumulative_blame
|
|
98
|
-
~Repository.branches
|
|
99
|
-
~Repository.tags
|
|
100
|
-
~Repository.revs
|
|
101
|
-
~Repository.bus_factor
|
|
102
|
-
~Repository.is_bare
|
|
103
|
-
~Repository.has_coverage
|
|
104
|
-
~Repository.has_branch
|
|
105
|
-
~Repository.get_branches_by_commit
|
|
106
|
-
~Repository.commits_in_tags
|
|
107
|
-
|
|
90
|
+
|
|
108
91
|
.. rubric:: Properties
|
|
109
92
|
|
|
110
|
-
.. autosummary::
|
|
111
|
-
:nosignatures:
|
|
112
|
-
~Repository.repo_name
|
|
113
|
-
~Repository.default_branch
|
|
114
93
|
|
|
115
94
|
.. autoclass:: GitFlowRepository
|
|
116
95
|
:members:
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Use Cases and Examples
|
|
2
|
-
|
|
2
|
+
======================
|
|
3
3
|
|
|
4
4
|
Git-Pandas provides a powerful interface for analyzing Git repositories using pandas DataFrames. This guide demonstrates common use cases and provides practical examples.
|
|
5
5
|
|
|
6
6
|
Basic Repository Analysis
|
|
7
|
-
|
|
7
|
+
-------------------------
|
|
8
8
|
|
|
9
9
|
Repository Attributes
|
|
10
|
-
|
|
10
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
11
11
|
|
|
12
12
|
Get basic information about a repository:
|
|
13
13
|
|
|
@@ -35,7 +35,7 @@ Get basic information about a repository:
|
|
|
35
35
|
print(repo.blame(include_globs=['*.py']))
|
|
36
36
|
|
|
37
37
|
Commit History Analysis
|
|
38
|
-
|
|
38
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
39
39
|
|
|
40
40
|
Analyze commit patterns and history:
|
|
41
41
|
|
|
@@ -57,10 +57,10 @@ Analyze commit patterns and history:
|
|
|
57
57
|
tag_commits = repo.commits_in_tags()
|
|
58
58
|
|
|
59
59
|
Project-Level Analysis
|
|
60
|
-
|
|
60
|
+
----------------------
|
|
61
61
|
|
|
62
62
|
Multiple Repository Analysis
|
|
63
|
-
|
|
63
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
64
64
|
|
|
65
65
|
Analyze multiple repositories simultaneously:
|
|
66
66
|
|
|
@@ -87,10 +87,10 @@ Analyze multiple repositories simultaneously:
|
|
|
87
87
|
print(project.blame())
|
|
88
88
|
|
|
89
89
|
Advanced Analysis
|
|
90
|
-
|
|
90
|
+
-----------------
|
|
91
91
|
|
|
92
92
|
Cumulative Blame Analysis
|
|
93
|
-
|
|
93
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
94
94
|
|
|
95
95
|
Track code ownership over time:
|
|
96
96
|
|
|
@@ -105,7 +105,7 @@ Track code ownership over time:
|
|
|
105
105
|
plt.show()
|
|
106
106
|
|
|
107
107
|
Bus Factor Analysis
|
|
108
|
-
|
|
108
|
+
~~~~~~~~~~~~~~~~~~~
|
|
109
109
|
|
|
110
110
|
Analyze project sustainability:
|
|
111
111
|
|
|
@@ -121,10 +121,10 @@ Analyze project sustainability:
|
|
|
121
121
|
ownership_patterns = repo.blame(committer=True, by='repository')
|
|
122
122
|
|
|
123
123
|
Performance Optimization
|
|
124
|
-
|
|
124
|
+
------------------------
|
|
125
125
|
|
|
126
126
|
Using Caching
|
|
127
|
-
|
|
127
|
+
~~~~~~~~~~~~~
|
|
128
128
|
|
|
129
129
|
Optimize performance with caching:
|
|
130
130
|
|
|
@@ -147,10 +147,10 @@ Optimize performance with caching:
|
|
|
147
147
|
repo = Repository('/path/to/repo', cache_backend=redis_cache)
|
|
148
148
|
|
|
149
149
|
Visualization Examples
|
|
150
|
-
|
|
150
|
+
----------------------
|
|
151
151
|
|
|
152
152
|
Commit Analysis
|
|
153
|
-
|
|
153
|
+
~~~~~~~~~~~~~~~
|
|
154
154
|
|
|
155
155
|
Visualize commit patterns:
|
|
156
156
|
|
|
@@ -167,7 +167,7 @@ Visualize commit patterns:
|
|
|
167
167
|
plt.show()
|
|
168
168
|
|
|
169
169
|
File Change Analysis
|
|
170
|
-
|
|
170
|
+
~~~~~~~~~~~~~~~~~~~~
|
|
171
171
|
|
|
172
172
|
Visualize file changes:
|
|
173
173
|
|
|
@@ -184,7 +184,7 @@ Visualize file changes:
|
|
|
184
184
|
plt.show()
|
|
185
185
|
|
|
186
186
|
Best Practices
|
|
187
|
-
|
|
187
|
+
--------------
|
|
188
188
|
|
|
189
189
|
* Use caching for expensive operations like blame analysis
|
|
190
190
|
* Filter data early using include_globs/ignore_globs
|