Repository navigation
Commit 70ff629
committed
Avoid stashing changes when all changes are staged
It was suggested in #135 that a potential way to avoid unnecessary file
change detection and general stashing woes would be to stash changes
only when there were unstaged changes that needed to be excluded from
the run.
This presents a nice optimization that I wish we had considered so long
ago. This gives us the opportunity to simplify the logic now that we see
the purpose of this feature a little more clearly: stash only when you
need to.
Issue #669 raised an interesting point about the difficulty to detect if
a stash entry was created, so we modified the tests to check if a method
call was made. This isn't great as its peeking deep into the
implementation, so we added some additional tests that ensured the
methods in question actually existed. Not perfect, but gives us some
confidence in the implementation.
While here, we were able to:
* Extract the stashing logic into a separate `stash_changes` helper
method.
* Eliminate the `initial_commit?` check, since in the case of an empty
it's impossible to see any "unstaged" tracked files, as there aren't
yet any tracked files by definition.
* Simplify the `cleanup_environment` logic to just use whether changes
were stashed in order to decide whether to restore.
Closes #669.1 parent 985873e commit 70ff629
2 files changed
Lines changed: 74 additions & 35 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
69 | 57 | | |
70 | | - | |
| 58 | + | |
| 59 | + | |
71 | 60 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | 61 | | |
76 | 62 | | |
77 | 63 | | |
| |||
82 | 68 | | |
83 | 69 | | |
84 | 70 | | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | 71 | | |
| 72 | + | |
91 | 73 | | |
92 | 74 | | |
93 | 75 | | |
94 | 76 | | |
95 | 77 | | |
96 | 78 | | |
97 | | - | |
98 | 79 | | |
99 | 80 | | |
100 | 81 | | |
| |||
140 | 121 | | |
141 | 122 | | |
142 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
143 | 145 | | |
144 | 146 | | |
145 | 147 | | |
| |||
172 | 174 | | |
173 | 175 | | |
174 | 176 | | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
183 | 182 | | |
184 | 183 | | |
185 | 184 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
161 | 180 | | |
162 | 181 | | |
163 | 182 | | |
| |||
319 | 338 | | |
320 | 339 | | |
321 | 340 | | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
322 | 362 | | |
323 | 363 | | |
324 | 364 | | |
| |||
0 commit comments