diff --git a/CHANGELOG.md b/CHANGELOG.md
index caccfdb..3266825 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
### Fixed
- Fixes an issue where stashes with only untracked files would not show in the `Stashes` node of the GitLens custom view
+- Fixes an issue where stashes with untracked files would not show its untracked files in the GitLens custom view
## [5.0.0] - 2017-09-12
### Added
diff --git a/images/dark/icon-status-conflict.svg b/images/dark/icon-status-conflict.svg
index 53b243c..cd4f007 100644
--- a/images/dark/icon-status-conflict.svg
+++ b/images/dark/icon-status-conflict.svg
@@ -1,6 +1,6 @@
\ No newline at end of file
diff --git a/images/dark/icon-status-unknown.svg b/images/dark/icon-status-unknown.svg
new file mode 100644
index 0000000..a265402
--- /dev/null
+++ b/images/dark/icon-status-unknown.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/images/light/icon-status-conflict.svg b/images/light/icon-status-conflict.svg
index b6088ec..8588cda 100644
--- a/images/light/icon-status-conflict.svg
+++ b/images/light/icon-status-conflict.svg
@@ -1,6 +1,6 @@
\ No newline at end of file
diff --git a/images/light/icon-status-unknown.svg b/images/light/icon-status-unknown.svg
new file mode 100644
index 0000000..a265402
--- /dev/null
+++ b/images/light/icon-status-unknown.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/git/models/status.ts b/src/git/models/status.ts
index 3fea032..ac6d1fe 100644
--- a/src/git/models/status.ts
+++ b/src/git/models/status.ts
@@ -19,7 +19,7 @@ export interface GitStatus {
files: GitStatusFile[];
}
-export declare type GitStatusFileStatus = '!' | '?' | 'A' | 'C' | 'D' | 'M' | 'R' | 'U';
+export declare type GitStatusFileStatus = '!' | '?' | 'A' | 'C' | 'D' | 'M' | 'R' | 'T' | 'U' | 'X' | 'B';
export interface IGitStatusFile {
status: GitStatusFileStatus;
@@ -71,7 +71,10 @@ const statusOcticonsMap = {
D: '$(diff-removed)',
M: '$(diff-modified)',
R: '$(diff-renamed)',
- U: '$(question)'
+ T: '$(diff-modified)',
+ U: '$(alert)',
+ X: '$(question)',
+ B: '$(question)'
};
export function getGitStatusOcticon(status: GitStatusFileStatus, missing: string = GlyphChars.Space.repeat(4)): string {
@@ -86,7 +89,10 @@ const statusIconsMap = {
D: 'icon-status-deleted.svg',
M: 'icon-status-modified.svg',
R: 'icon-status-renamed.svg',
- U: 'icon-status-conflict.svg'
+ T: 'icon-status-modified.svg',
+ U: 'icon-status-conflict.svg',
+ X: 'icon-status-unknown.svg',
+ B: 'icon-status-unknown.svg'
};
export function getGitStatusIcon(status: GitStatusFileStatus): string {
diff --git a/src/views/stashNode.ts b/src/views/stashNode.ts
index b788bc0..1bb609f 100644
--- a/src/views/stashNode.ts
+++ b/src/views/stashNode.ts
@@ -1,4 +1,5 @@
'use strict';
+import { Iterables } from '../system';
import { ExtensionContext, TreeItem, TreeItemCollapsibleState } from 'vscode';
import { ExplorerNode, ResourceType } from './explorerNode';
import { CommitFormatter, GitService, GitStashCommit, GitUri, ICommitFormatOptions } from '../gitService';
@@ -13,7 +14,20 @@ export class StashNode extends ExplorerNode {
}
async getChildren(): Promise {
- return Promise.resolve((this.commit as GitStashCommit).fileStatuses.map(s => new StashFileNode(s, this.commit, this.context, this.git)));
+ const statuses = (this.commit as GitStashCommit).fileStatuses;
+
+ // Check for any untracked files -- since git doesn't return them via `git stash list` :(
+ const log = await this.git.getLogForRepo(this.commit.repoPath, `${(this.commit as GitStashCommit).stashName}^3`, 1);
+ if (log !== undefined) {
+ const commit = Iterables.first(log.commits.values());
+ if (commit !== undefined && commit.fileStatuses.length !== 0) {
+ // Since these files are untracked -- make them look that way
+ commit.fileStatuses.forEach(s => s.status = '?');
+ statuses.splice(statuses.length, 0, ...commit.fileStatuses);
+ }
+ }
+
+ return Promise.resolve(statuses.map(s => new StashFileNode(s, this.commit, this.context, this.git)));
}
getTreeItem(): TreeItem {