| 
					
				 | 
			
			
				@@ -179,25 +179,50 @@ sub pushChanges { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sub stashAndReset { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sub dropStash($) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	my $logger = shift; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	my $gitCmd = findBin("git",$logger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	shellex("$gitCmd stash",$logger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	my @stashList = split("\n", shellex("$gitCmd stash list",$logger)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	my $stashCount = scalar @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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	shellex("$gitCmd rebase",$logger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sub resetFromUpstream { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sub resetFromUpstream($) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# 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"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |