aboutsummaryrefslogtreecommitdiff
path: root/git/db/complex.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/db/complex.py')
-rw-r--r--git/db/complex.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/git/db/complex.py b/git/db/complex.py
new file mode 100644
index 00000000..31b047a0
--- /dev/null
+++ b/git/db/complex.py
@@ -0,0 +1,28 @@
+"""Module with many useful complex databases with different useful combinations of primary implementations"""
+
+from py.complex import PurePartialGitDB
+from cmd.complex import CmdPartialGitDB
+from compat import RepoCompatibilityInterface
+
+__all__ = ['CmdGitDB', 'PureGitDB', 'CmdCompatibilityGitDB', 'PureCompatibilityGitDB']
+
+class CmdGitDB(CmdPartialGitDB, PurePartialGitDB):
+ """A database which uses primarily the git command implementation, but falls back
+ to pure python where it is more feasible
+ :note: To assure consistent behaviour across implementations, when calling the
+ ``stream()`` method a cache is created. This makes this implementation a bad
+ choice when reading big files as these are streamed from memory in all cases."""
+
+class CmdCompatibilityGitDB(RepoCompatibilityInterface, CmdGitDB):
+ """A database which fills in its missing implementation using the pure python
+ implementation"""
+ pass
+
+class PureGitDB(PurePartialGitDB, CmdPartialGitDB):
+ """A repository which uses the pure implementation primarily, but falls back
+ on using the git command for high-level functionality"""
+
+class PureCompatibilityGitDB(RepoCompatibilityInterface, PureGitDB):
+ """Repository which uses the pure implementation primarily, but falls back
+ to the git command implementation. Please note that the CmdGitDB does it
+ the opposite way around."""