| 
														
															@@ -179,25 +179,50 @@ sub pushChanges { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-sub stashAndReset { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+sub dropStash($) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $logger = shift; 
														 | 
														
														 | 
														
															 	my $logger = shift; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $gitCmd = findBin("git",$logger); 
														 | 
														
														 | 
														
															 	my $gitCmd = findBin("git",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	shellex("$gitCmd stash",$logger); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my @stashList = split("\n", shellex("$gitCmd stash list",$logger)); 
														 | 
														
														 | 
														
															 	my @stashList = split("\n", shellex("$gitCmd stash list",$logger)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $stashCount = scalar @stashList; 
														 | 
														
														 | 
														
															 	my $stashCount = scalar @stashList; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	# TODO: Don't need $stashCount, should just be able to iterate over @stashList 
														 | 
														
														 | 
														
															 	# TODO: Don't need $stashCount, should just be able to iterate over @stashList 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	foreach my $stashNum ( 1..$stashCount ) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		shellex("$gitCmd stash drop 0",$logger); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if ( scalar @stashList == 0 ) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		print "Stash is empty so not dropping\n"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		foreach my $stashNum ( 1..$stashCount ) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			shellex("$gitCmd stash drop 0",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+sub stashAndReset { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	my $logger = shift; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	my $gitCmd = findBin("git",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	shellex("$gitCmd stash",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	dropStash($logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	# TODO: Depending on use case need to do more here 
														 | 
														
														 | 
														
															 	# TODO: Depending on use case need to do more here 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	shellex("$gitCmd rebase",$logger); 
														 | 
														
														 | 
														
															 	shellex("$gitCmd rebase",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-sub resetFromUpstream { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+sub resetFromUpstream($) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	# git stash and git reset --hard and git pull ? I think 
														 | 
														
														 | 
														
															 	# git stash and git reset --hard and git pull ? I think 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	# git reset upstream/master; git stash 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	my $logger = shift; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	my $gitCmd = findBin("git",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	my $upstream = shellex("$gitCmd config --get remote.upstream.url",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if ( $upstream eq "" || ! defined $upstream ) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		print "Upstream not configured, exiting\n"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		exit 1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	shellex("$gitCmd reset upstream/master",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	shellex("$gitCmd stash",$logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	dropStash($logger); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	print "Successful reset from upstream\n"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	print "Changes have not been pushed, run \'$gitCmd pull\' to revert\n"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |