From e659e63fc08ecd46cc1c26b6260126502ec656aa Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Thu, 9 Oct 2008 20:41:46 +0200 Subject: [PATCH] CommitView: Add option to amend commits --- PBChangedFile.h | 6 +- PBChangedFile.m | 12 +- PBGitCommitController.h | 2 + PBGitCommitController.m | 33 +++- PBGitCommitView.xib | 318 +++++++++------------------------------ PBWebChangesController.m | 5 + html/diff.html | 2 +- 7 files changed, 121 insertions(+), 257 deletions(-) diff --git a/PBChangedFile.h b/PBChangedFile.h index 73ee3f0..2141e59 100644 --- a/PBChangedFile.h +++ b/PBChangedFile.h @@ -29,9 +29,11 @@ typedef enum { @property (assign) BOOL hasCachedChanges; @property (assign) BOOL hasUnstagedChanges; - (NSImage *)icon; -- (NSString *)changes; +- (NSString *)cachedChangesAmend:(BOOL)amend; +- (NSString *)unstagedChanges; + - (void) stageChanges; -- (void) unstageChanges; +- (void) unstageChangesAmend:(BOOL)amend; - (id) initWithPath:(NSString *)p andRepository:(PBGitRepository *)r; @end diff --git a/PBChangedFile.m b/PBChangedFile.m index 3bb0ae7..56434ed 100644 --- a/PBChangedFile.m +++ b/PBChangedFile.m @@ -20,8 +20,11 @@ return self; } -- (NSString *) cachedChanges +- (NSString *) cachedChangesAmend:(BOOL) amend { + if (amend) + return [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"diff", @"--cached", @"HEAD^", @"--", path, nil]]; + return [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"diff", @"--cached", @"--", path, nil]]; } @@ -63,9 +66,12 @@ self.hasCachedChanges = YES; } -- (void) unstageChanges +- (void) unstageChangesAmend:(BOOL) amend { - [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"reset", @"--", path, nil]]; + if (amend) + [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"reset", @"HEAD^", @"--", path, nil]]; + else + [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"reset", @"--", path, nil]]; self.hasCachedChanges = NO; self.hasUnstagedChanges = YES; } diff --git a/PBGitCommitController.h b/PBGitCommitController.h index bfa04a7..7f00a3d 100644 --- a/PBGitCommitController.h +++ b/PBGitCommitController.h @@ -23,6 +23,7 @@ // You can increase it when your process start // And decrease it after you have finished. int busy; + BOOL amend; IBOutlet PBIconAndTextCell* unstagedButtonCell; IBOutlet PBIconAndTextCell* cachedButtonCell; @@ -34,6 +35,7 @@ @property (retain) NSMutableArray *files; @property (copy) NSString *status; @property (assign) int busy; +@property (assign) BOOL amend; - (void) readCachedFiles:(NSNotification *)notification; - (void) readOtherFiles:(NSNotification *)notification; diff --git a/PBGitCommitController.m b/PBGitCommitController.m index b6d5e2a..9248969 100644 --- a/PBGitCommitController.m +++ b/PBGitCommitController.m @@ -12,13 +12,15 @@ @implementation PBGitCommitController -@synthesize files, status, busy; +@synthesize files, status, busy, amend; - (void)awakeFromNib { [super awakeFromNib]; self.busy = 0; + amend = NO; + [unstagedButtonCell setAction:@selector(rowClicked:)]; [cachedButtonCell setAction:@selector(rowClicked:)]; @@ -39,6 +41,18 @@ [[NSSortDescriptor alloc] initWithKey:@"path" ascending:true]]]; } +- (void) setAmend:(BOOL)newAmend +{ + if (newAmend == amend) + return; + amend = newAmend; + + if (amend && [[commitMessageView string] length] <= 3) + commitMessageView.string = [repository outputForCommand:@"log -1 --pretty=format:%s%n%n%b HEAD"]; + + [self refresh:self]; +} + - (NSArray *) linesFromNotification:(NSNotification *)notification { NSDictionary *userInfo = [notification userInfo]; @@ -60,16 +74,18 @@ - (NSString *) parentTree { - id a = [repository parseReference:@"HEAD"]; + NSString *parent = amend ? @"HEAD^" : @"HEAD"; + + NSString *a = [repository parseReference:@"HEAD^"]; // TODO: parseReference should exit nil if it errors out. For // now, compare to "HEAD" - if ([a isEqualToString:@"HEAD"]) { + if ([a isEqualToString:parent]) { // We don't have a head ref. Return the empty tree. return @"4b825dc642cb6eb9a060e54bf8d69288fbee4904"; } - return @"HEAD"; + return parent; } - (void) refresh:(id) sender @@ -233,9 +249,10 @@ int ret; NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"commit-tree", tree, nil]; - if ([repository parseSymbolicReference:@"HEAD"]) { + NSString *parent = amend ? @"HEAD^" : @"HEAD"; + if ([repository parseReference:parent]) { [arguments addObject:@"-p"]; - [arguments addObject:@"HEAD"]; + [arguments addObject:parent]; } NSString *commit = [repository outputForArguments:arguments @@ -259,7 +276,9 @@ repository.hasChanged = YES; self.busy--; [commitMessageView setString:@""]; + amend = NO; [self refresh:self]; + self.amend = NO; } - (void) tableClicked:(NSTableView *) tableView @@ -280,7 +299,7 @@ if ([tableView tag] == 0) [selectedItem stageChanges]; else - [selectedItem unstageChanges]; + [selectedItem unstageChangesAmend:amend]; // Add the file to the other controller if it's not there yet for (PBChangedFile *object in [otherController arrangedObjects]) diff --git a/PBGitCommitView.xib b/PBGitCommitView.xib index 81e410c..ecbd2d9 100644 --- a/PBGitCommitView.xib +++ b/PBGitCommitView.xib @@ -48,7 +48,7 @@ 1044 - + 6 System controlColor @@ -306,7 +306,7 @@ 289 - {{321, 6}, {96, 32}} + {{339, 0}, {96, 32}} YES @@ -359,7 +359,7 @@ WebURLsWithTitlesPboardType - {427, 14} + {427, 32} @@ -432,7 +432,7 @@ - {{1, 1}, {427, 139}} + {{1, 1}, {427, 157}} @@ -464,7 +464,7 @@ 9.456522e-01 - {{0, 54}, {429, 141}} + {{0, 36}, {429, 159}} 530 @@ -472,214 +472,32 @@ - + - -2147483356 - {{0, 14}, {172, 18}} + 292 + {{-2, 9}, {65, 18}} YES - 1 - 2 - - YES - - -2080244224 - 0 - Commit - - 1 - - 1211912703 - 128 - - NSRadioButton - - - - 200 - 25 - - - 67239424 - 0 - Amend - - - 1211912703 - 128 - - 549453824 - {18, 18} - - YES - - YES - - - - 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 -AAAAAHQ2AAA8KQAAAqJYWVogAAAAAAAAXP8AAK9ZAAAY31hZWiAAAAAAAAAloAAAFJkAALekWFlaIAAA -AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 -cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD -AQAAAgAAAAkAHgA+AGcAmwDXAVoCdgPZBTEG9gjqCwoNTQ+dEfgUOxZ4GIwafRw/HeAffiEXIqokPSXO -J2UpASqfLEEt5y+AMRgymzQSNXc2zjgXOVU6iTu2POA+Bz8rQFFBfEKwQ+9FOEaSR+tJLEpUS3VMi02a -Tp9PnFCVUYtSf1N7VJ9VxFbiV/ZZAVoEWwFb91zrXd5e0F/CYLZhrmKpY6xkuGXLZuhoC2ksai9rI2wU -bQVt9m7nb9lwynG7cq1zn3SZdZl2n3epeLN5s3qne458Yn0sfgZ+8H/igNOBxIK2g6eEmIWKhnqHa4hd -iU+KQoszjCWNFo4GjveP6ZDXkbaSd5M6lAeU3pXElr2XxpjbmfubEpv7nMWdhp5RnyOf/qDhocqiuKOp -pJiliaZ6p2ioUak0qhCq46uvrHGtMq4Brumv2bDLsb2yr7OgtJK1g7Z1t1u4K7jtua+6ertOvCm9DL30 -vuK/08DDwbbCpMOTxHzFX8Y6xw3H2MiZyVvKK8sTzATM9s3oztnPy9C80a7Sn9OP1HzVYdY+1xLX39io -2XXaRtsg3ALc793g3tHfxOC14abil+OJ5HrlbOZO5w7nnOgw6MnpcOof6tfrlOxR7Q3tzO6t75vwivF0 -8ljzNvQM9Nb1mfZW9w/3yfiJ+U/6HPrz+9T8uv2l/pP/Wf//AAAACQAeAD4AZwCbANcBWgJ2A9kFMQb2 -COoLCg1ND50R+BQ7FngYjBp9HD8d4B9+IRciqiQ9Jc4nZSkBKp8sQS3nL4AxGDKbNBI1dzbOOBc5VTqJ -O7Y84D4HPytAUUF8QrBD70U4RpJH60ksSlRLdUyLTZpOn0+cUJVRi1J/U3tUn1XEVuJX9lkBWgRbAVv3 -XOtd3l7QX8JgtmGuYqljrGS4Zctm6GgLaSxqL2sjbBRtBW32budv2XDKcbtyrXOfdJl1mXafd6l4s3mz -eqd7jnxifSx+Bn7wf+KA04HEgraDp4SYhYqGeodriF2JT4pCizOMJY0WjgaO94/pkNeRtpJ3kzqUB5Te -lcSWvZfGmNuZ+5sSm/ucxZ2GnlGfI5/+oOGhyqK4o6mkmKWJpnqnaKhRqTSqEKrjq6+sca0yrgGu6a/Z -sMuxvbKvs6C0krWDtnW3W7gruO25r7p6u068Kb0MvfS+4r/TwMPBtsKkw5PEfMVfxjrHDcfYyJnJW8or -yxPMBMz2zejO2c/L0LzRrtKf04/UfNVh1j7XEtff2KjZddpG2yDcAtzv3eDe0d/E4LXhpuKX44nkeuVs -5k7nDuec6DDoyelw6h/q1+uU7FHtDe3M7q3vm/CK8XTyWPM29Az01vWZ9lb3D/fJ+In5T/oc+vP71Py6 -/aX+k/9Z//8AAAAJAB4APgBnAJsA1wFaAnYD2QUxBvYI6gsKDU0PnRH4FDsWeBiMGn0cPx3gH34hFyKq -JD0lzidlKQEqnyxBLecvgDEYMps0EjV3Ns44FzlVOok7tjzgPgc/K0BRQXxCsEPvRThGkkfrSSxKVEt1 -TItNmk6fT5xQlVGLUn9Te1SfVcRW4lf2WQFaBFsBW/dc613eXtBfwmC2Ya5iqWOsZLhly2boaAtpLGov -ayNsFG0FbfZu52/ZcMpxu3Ktc590mXWZdp93qXizebN6p3uOfGJ9LH4GfvB/4oDTgcSCtoOnhJiFioZ6 -h2uIXYlPikKLM4wljRaOBo73j+mQ15G2kneTOpQHlN6VxJa9l8aY25n7mxKb+5zFnYaeUZ8jn/6g4aHK -orijqaSYpYmmeqdoqFGpNKoQquOrr6xxrTKuAa7pr9mwy7G9sq+zoLSStYO2dbdbuCu47bmvunq7Trwp -vQy99L7iv9PAw8G2wqTDk8R8xV/GOscNx9jImclbyivLE8wEzPbN6M7Zz8vQvNGu0p/Tj9R81WHWPtcS -19/YqNl12kbbINwC3O/d4N7R38TgteGm4pfjieR65WzmTucO55zoMOjJ6XDqH+rX65TsUe0N7czure+b -8IrxdPJY8zb0DPTW9Zn2VvcP98n4iflP+hz68/vU/Lr9pf6T/1n//wAAbmRpbgAAAAAAAAY2AACkhwAA -VeMAAEvGAACZSgAAJjwAABNkAABQDQAAVDkAAjMzAAIzMwACMzMAAwEAAAIAAABcAHcAjQCjAL0A0gDm -APkBDgEhATUBSAFcAXABhAGZAa4BwwHaAfECCQIhAjsCVwJzApICswLXAv4DJgNPA3kDpQPSBAAELwRf -BJAEwQTzBSUFWAWMBcAF9AYqBmIGmwbVBxMHUgeVB9sIJAhxCMIJFgluCckKJwqHCuoLTwu1DBsMgAzk -DUYNpw4FDmMOxQ8wD6QQGxCYERoRohIxEsUTXRP5FJYVHBWhFisWuhdQF+wYjhk3GeUalxtLHAIcuh1y -Hike3R+NIDog4yGJIi4i2COcJGolOiYNJuEntyiPKWoqRSskK/4s1C2mLncvSDAhMQcx/TMONDA1MjYo -NyA4GjkWOhQ7FDwVPRo+ID8mQC9BOUJGQ1VEZ0V7RpBHpkjMSi9LjUzXTgxPKlA3UTpSNVMqVD9VpVcg -WItZ5lsyXHhdt170YDVhdWK2Y/9lUmazaCVprWtMbPBuU2+pcP5yVXOtdQh2ZHfDeSN6nHxWfhV/v4FX -gt+EXoXVh0iIvYoxi62NK462kE6R/ZPFlamXjJkrmrScP53Jn1mg6KJ5pAuloqc6qN2qlKxjrkuwPbIp -tAK1yLd6uSO6z7x6vim/2sGNw0DE9saryKbLlM5V0M3THNVf16bZ6dvI3ZXfbeFQ40XlUueC6c7sOe6m -8PjzM/VQ91j5U/tD/TX//wAAAFwAdwCNAKMAvQDSAOYA+QEOASEBNQFIAVwBcAGEAZkBrgHDAdoB8QIJ -AiECOwJXAnMCkgKzAtcC/gMmA08DeQOlA9IEAAQvBF8EkATBBPMFJQVYBYwFwAX0BioGYgabBtUHEwdS -B5UH2wgkCHEIwgkWCW4JyQonCocK6gtPC7UMGwyADOQNRg2nDgUOYw7FDzAPpBAbEJgRGhGiEjESxRNd -E/kUlhUcFaEWKxa6F1AX7BiOGTcZ5RqXG0scAhy6HXIeKR7dH40gOiDjIYkiLiLYI5wkaiU6Jg0m4Se3 -KI8paipFKyQr/izULaYudy9IMCExBzH9Mw40MDUyNig3IDgaORY6FDsUPBU9Gj4gPyZAL0E5QkZDVURn -RXtGkEemSMxKL0uNTNdODE8qUDdROlI1UypUP1WlVyBYi1nmWzJceF23XvRgNWF1YrZj/2VSZrNoJWmt -a0xs8G5Tb6lw/nJVc611CHZkd8N5I3qcfFZ+FX+/gVeC34RehdWHSIi9ijGLrY0rjraQTpH9k8WVqZeM -mSuatJw/ncmfWaDoonmkC6Wipzqo3aqUrGOuS7A9sim0ArXIt3q5I7rPvHq+Kb/awY3DQMT2xqvIpsuU -zlXQzdMc1V/Xptnp28jdld9t4VDjReVS54Lpzuw57qbw+PMz9VD3WPlT+0P9Nf//AAAAXAB3AI0AowC9 -ANIA5gD5AQ4BIQE1AUgBXAFwAYQBmQGuAcMB2gHxAgkCIQI7AlcCcwKSArMC1wL+AyYDTwN5A6UD0gQA -BC8EXwSQBMEE8wUlBVgFjAXABfQGKgZiBpsG1QcTB1IHlQfbCCQIcQjCCRYJbgnJCicKhwrqC08LtQwb -DIAM5A1GDacOBQ5jDsUPMA+kEBsQmBEaEaISMRLFE10T+RSWFRwVoRYrFroXUBfsGI4ZNxnlGpcbSxwC -HLodch4pHt0fjSA6IOMhiSIuItgjnCRqJTomDSbhJ7cojylqKkUrJCv+LNQtpi53L0gwITEHMf0zDjQw -NTI2KDcgOBo5FjoUOxQ8FT0aPiA/JkAvQTlCRkNVRGdFe0aQR6ZIzEovS41M104MTypQN1E6UjVTKlQ/ -VaVXIFiLWeZbMlx4Xbde9GA1YXVitmP/ZVJms2glaa1rTGzwblNvqXD+clVzrXUIdmR3w3kjepx8Vn4V -f7+BV4LfhF6F1YdIiL2KMYutjSuOtpBOkf2TxZWpl4yZK5q0nD+dyZ9ZoOiieaQLpaKnOqjdqpSsY65L -sD2yKbQCtci3erkjus+8er4pv9rBjcNAxPbGq8imy5TOVdDN0xzVX9em2enbyN2V323hUONF5VLngunO -7DnupvD48zP1UPdY+VP7Q/01//8AAGRlc2MAAAAAAAAABWlNYWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1s -dWMAAAAAAAAAAQAAAAxlblVTAAAACAAAABwAaQBNAGEAY21tb2QAAAAAAAAGEAAAnFoAAAAAvfJUhAAA -AAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAwOAA - - - - - - 3 - MCAwAA - - - - 400 - 75 - - - {84, 18} - {4, 2} - 1151868928 - NSActionCell - - 67239424 + + -2080244224 0 - Radio + Amend + 1211912703 - 128 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - + 130 + + NSImage + NSSwitch - - 400 - 75 + + NSSwitch + + + + 200 + 25 - - - - {429, 200} @@ -1248,6 +1066,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 241 + + + value: amend + + + + + + value: amend + value + amend + 2 + + + 252 + @@ -1367,9 +1201,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - - + + @@ -1446,32 +1280,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 159 - - - YES - - - - - - - - 183 - - - - - 162 - - - - - 160 - - - 133 @@ -1580,6 +1388,20 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 247 + + + YES + + + + + + 248 + + + @@ -1600,9 +1422,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 131.IBPluginDependency 132.IBPluginDependency 133.IBPluginDependency - 159.IBPluginDependency - 160.IBPluginDependency - 162.IBPluginDependency 163.IBPluginDependency 164.IBPluginDependency 2.IBPluginDependency @@ -1613,6 +1432,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 227.IBPluginDependency 239.IBPluginDependency 240.IBPluginDependency + 247.IBPluginDependency + 248.IBPluginDependency 42.IBPluginDependency 45.IBPluginDependency 46.IBPluginDependency @@ -1633,7 +1454,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilderKit {{358, 206}, {852, 432}} com.apple.InterfaceBuilder.CocoaPlugin - + PBIconAndTextCell PBIconAndTextCell @@ -1646,9 +1467,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin {{341, 837}, {616, 169}} com.apple.InterfaceBuilder.CocoaPlugin {{132, 614}, {616, 0}} @@ -1667,6 +1485,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -1689,7 +1509,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 241 + 252 @@ -1760,7 +1580,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA PBWebChangesController - NSObject + PBWebController YES @@ -1769,7 +1589,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA controller previousFile unstagedFilesController - view YES @@ -1777,7 +1596,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA PBGitCommitController id NSArrayController - WebView @@ -1785,6 +1603,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA PBWebChangesController.h + + PBWebController + NSObject + + view + WebView + + + IBProjectSource + PBWebController.h + + 0 diff --git a/PBWebChangesController.m b/PBWebChangesController.m index 12dd72f..e6cb917 100644 --- a/PBWebChangesController.m +++ b/PBWebChangesController.m @@ -27,6 +27,11 @@ static PBChangedFile *lastFileSelected = nil; [self showDiff: lastFileSelected cached:NO]; } +- (BOOL) amend +{ + return controller.amend; +} + - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change diff --git a/html/diff.html b/html/diff.html index 47ceb5a..56f0767 100644 --- a/html/diff.html +++ b/html/diff.html @@ -22,7 +22,7 @@ } else { $("diff").hide(); if (cached) - $("diff").innerHTML = file.cachedChanges().escapeHTML(); + $("diff").innerHTML = file.cachedChangesAmend_(Controller.amend()).escapeHTML(); else $("diff").innerHTML = file.unstagedChanges().escapeHTML(); highlightDiffs();