summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
0b635fe)
Create the objects for a repository's default index, worktree, and
index+worktree just once. Both for performance (though the gain is
probably negligible), and for future-proofing if we ever add mutable
state to those objects.
And make them properties while we're at it.
Signed-off-by: Karl Hasselström <kha@treskal.com>
+ list(stack.patchorder.unapplied)))
if len(patches) < 2:
raise common.CmdException('Need at least two patches')
+ list(stack.patchorder.unapplied)))
if len(patches) < 2:
raise common.CmdException('Need at least two patches')
- return _coalesce(stack, stack.repository.default_iw(), options.name,
+ return _coalesce(stack, stack.repository.default_iw, options.name,
options.message, options.save_template, patches)
options.message, options.save_template, patches)
if not patches:
raise common.CmdException('No patches to commit')
if not patches:
raise common.CmdException('No patches to commit')
- iw = stack.repository.default_iw()
+ iw = stack.repository.default_iw
trans = transaction.StackTransaction(stack, 'stg commit')
try:
common_prefix = 0
trans = transaction.StackTransaction(stack, 'stg commit')
try:
common_prefix = 0
patch = args[0]
stack = directory.repository.current_stack
patch = args[0]
stack = directory.repository.current_stack
- iw = stack.repository.default_iw()
+ iw = stack.repository.default_iw
trans = transaction.StackTransaction(stack, 'stg goto')
if patch in trans.applied:
to_pop = set(trans.applied[trans.applied.index(patch)+1:])
trans = transaction.StackTransaction(stack, 'stg goto')
if patch in trans.applied:
to_pop = set(trans.applied[trans.applied.index(patch)+1:])
self.__refs = Refs(self)
self.__trees = ObjectCache(lambda sha1: Tree(sha1))
self.__commits = ObjectCache(lambda sha1: Commit(self, sha1))
self.__refs = Refs(self)
self.__trees = ObjectCache(lambda sha1: Tree(sha1))
self.__commits = ObjectCache(lambda sha1: Commit(self, sha1))
+ self.__default_index = None
+ self.__default_worktree = None
+ self.__default_iw = None
env = property(lambda self: { 'GIT_DIR': self.__git_dir })
@classmethod
def default(cls):
env = property(lambda self: { 'GIT_DIR': self.__git_dir })
@classmethod
def default(cls):
).output_one_line())
except run.RunException:
raise RepositoryException('Cannot find git repository')
).output_one_line())
except run.RunException:
raise RepositoryException('Cannot find git repository')
- return Index(self, (os.environ.get('GIT_INDEX_FILE', None)
- or os.path.join(self.__git_dir, 'index')))
+ if self.__default_index == None:
+ self.__default_index = Index(
+ self, (os.environ.get('GIT_INDEX_FILE', None)
+ or os.path.join(self.__git_dir, 'index')))
+ return self.__default_index
def temp_index(self):
return Index(self, self.__git_dir)
def temp_index(self):
return Index(self, self.__git_dir)
def default_worktree(self):
def default_worktree(self):
- path = os.environ.get('GIT_WORK_TREE', None)
- if not path:
- o = run.Run('git', 'rev-parse', '--show-cdup').output_lines()
- o = o or ['.']
- assert len(o) == 1
- path = o[0]
- return Worktree(path)
+ if self.__default_worktree == None:
+ path = os.environ.get('GIT_WORK_TREE', None)
+ if not path:
+ o = run.Run('git', 'rev-parse', '--show-cdup').output_lines()
+ o = o or ['.']
+ assert len(o) == 1
+ path = o[0]
+ self.__default_worktree = Worktree(path)
+ return self.__default_worktree
+ @property
- return IndexAndWorktree(self.default_index(), self.default_worktree())
+ if self.__default_iw == None:
+ self.__default_iw = IndexAndWorktree(self.default_index,
+ self.default_worktree)
+ return self.__default_iw
directory = property(lambda self: self.__git_dir)
refs = property(lambda self: self.__refs)
def cat_object(self, sha1):
directory = property(lambda self: self.__git_dir)
refs = property(lambda self: self.__refs)
def cat_object(self, sha1):