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
-
- {{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
-
-
-
- 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
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAA78AAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAO/GFw
-cGwCAAAAbW50clJHQiBYWVogB9gAAQAGABIAKAAAYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBs2EIlO++w4mW60UMYNWHGWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAA
-B+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAAAkbW1vZAAADrAAAAAoY3BydAAADtgAAAAkWFlaIAAA
-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();