Merge lp:~jelmer/brz/keep-submodule into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/keep-submodule
Merge into: lp:brz
Diff against target: 78 lines (+31/-10)
2 files modified
breezy/git/tests/test_workingtree.py (+24/-7)
breezy/git/tree.py (+7/-3)
To merge this branch: bzr merge lp:~jelmer/brz/keep-submodule
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+355820@code.launchpad.net

Commit message

Don't show a delta for unchanged submodules.

Description of the change

Don't show a delta for unchanged submodules.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Looks good, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/tests/test_workingtree.py'
2--- breezy/git/tests/test_workingtree.py 2018-09-30 00:33:53 +0000
3+++ breezy/git/tests/test_workingtree.py 2018-11-12 20:29:12 +0000
4@@ -22,7 +22,9 @@
5 import os
6 import stat
7
8+from dulwich.index import IndexEntry
9 from dulwich.objects import (
10+ S_IFGITLINK,
11 Blob,
12 Tree,
13 ZERO_SHA,
14@@ -130,17 +132,19 @@
15 def setUp(self):
16 super(ChangesBetweenGitTreeAndWorkingCopyTests, self).setUp()
17 self.wt = self.make_branch_and_tree('.', format='git')
18+ self.store = self.wt.branch.repository._git.object_store
19
20 def expectDelta(self, expected_changes,
21- expected_extras=None, want_unversioned=False):
22- store = self.wt.branch.repository._git.object_store
23- try:
24- tree_id = store[self.wt.branch.repository._git.head()].tree
25- except KeyError:
26- tree_id = None
27+ expected_extras=None, want_unversioned=False,
28+ tree_id=None):
29+ if tree_id is None:
30+ try:
31+ tree_id = self.store[self.wt.branch.repository._git.head()].tree
32+ except KeyError:
33+ tree_id = None
34 with self.wt.lock_read():
35 changes, extras = changes_between_git_tree_and_working_copy(
36- store, tree_id, self.wt, want_unversioned=want_unversioned)
37+ self.store, tree_id, self.wt, want_unversioned=want_unversioned)
38 self.assertEqual(expected_changes, list(changes))
39 if expected_extras is None:
40 expected_extras = set()
41@@ -236,3 +240,16 @@
42 (None, newt.id)),
43 ((None, b'a'), (None, stat.S_IFREG | 0o644), (None, newa.id))
44 ], [b'a'], want_unversioned=True)
45+
46+ def test_submodule(self):
47+ self.build_tree(['a/'])
48+ a = Blob.from_string(b'irrelevant\n')
49+ with self.wt.lock_tree_write():
50+ (index, index_path) = self.wt._lookup_index(b'a')
51+ index[b'a'] = IndexEntry(
52+ 0, 0, 0, 0, S_IFGITLINK, 0, 0, 0, a.id, 0)
53+ self.wt._index_dirty = True
54+ t = Tree()
55+ t.add(b"a", S_IFGITLINK , a.id)
56+ self.store.add_object(t)
57+ self.expectDelta([], tree_id=t.id)
58
59=== modified file 'breezy/git/tree.py'
60--- breezy/git/tree.py 2018-09-14 16:53:25 +0000
61+++ breezy/git/tree.py 2018-11-12 20:29:12 +0000
62@@ -1408,9 +1408,13 @@
63 # Entry was removed; keep it listed, but mark it as gone.
64 blobs[path] = (ZERO_SHA, 0)
65 elif e.errno == errno.EISDIR:
66- # Entry was turned into a directory
67- dirified.append((path, Tree().id, stat.S_IFDIR))
68- store.add_object(Tree())
69+ # TODO(jelmer): Only do this if 'path' appears in .gitmodules?
70+ if S_ISGITLINK(index_entry.mode):
71+ blobs[path] = (index_entry.sha, index_entry.mode)
72+ else:
73+ # Entry was turned into a directory
74+ dirified.append((path, Tree().id, stat.S_IFDIR))
75+ store.add_object(Tree())
76 else:
77 raise
78 else:

Subscribers

People subscribed via source and target branches