Skip to content

Commit a2c6776

Browse files
author
embs
committed
List empty dirs in gl status
So users can track them if they wish.
1 parent 7b3d870 commit a2c6776

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

gitless/core.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,14 @@ def status(self):
771771
yield self.FileStatus(
772772
fp, GL_STATUS_UNTRACKED, True, exists_in_wd, True, False)
773773

774+
# find untracked empty dirs
775+
for dirpath, dirs, files in os.walk('.', topdown=True):
776+
dirs[:] = [d for d in dirs if d not in ['.git'] and not
777+
self.path_is_ignored(d)]
778+
if not dirs and not files:
779+
yield self.FileStatus(dirpath, GL_STATUS_UNTRACKED, False, True, False,
780+
False)
781+
774782
def status_file(self, path):
775783
"""Return the status (see FileStatus) of the given path."""
776784
return self._status_file(path)[0]

gitless/tests/test_e2e.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,27 @@ def assert_not_in_repo(*cmds):
6565

6666
class TestTrackEmptyDir(TestEndToEnd):
6767

68+
def test_empty_dir_status(self):
69+
dir_to_track = 'wanted_empty_dir'
70+
dir_to_track_path = os.path.join(self.path, dir_to_track)
71+
os.mkdir(dir_to_track_path)
72+
73+
out = utils.stdout(gl.status())
74+
75+
self.assertIn(dir_to_track, out, 'Empty dir didn\'t appear in status')
76+
77+
def test_ignored_empty_dir_status(self):
78+
gitignore = os.path.join(self.path, '.gitignore')
79+
ignored_empty_dir = 'ignored_empty_dir'
80+
ignored_empty_dir_path = os.path.join(self.path, ignored_empty_dir)
81+
os.mkdir(ignored_empty_dir_path)
82+
utils.write_file(gitignore, ignored_empty_dir)
83+
84+
out = utils.stdout(gl.status())
85+
86+
self.assertFalse(ignored_empty_dir in out, 'Ignored empty dir was listed in' +
87+
' status')
88+
6889
def test_tracked_empty_dir(self):
6990
dir_to_track = 'wanted_empty_dir'
7091
dir_to_track_path = os.path.join(self.path, dir_to_track)

0 commit comments

Comments
 (0)