def push(self):
        """
         Adding the no_thin argument to the GIT push because we had some issues pushing previously.
         According to http://stackoverflow.com/questions/16586642/git-unpack-error-on-push-to-gerrit#comment42953435_23610917,
         "a new optimization which causes git to send as little data as possible over the network caused this bug to manifest, 
          so my guess is --no-thin just turns these optimizations off. From git push --help: "A thin transfer significantly 
                  reduces the amount of sent data when the sender and receiver share many of the same objects in common." (--thin is the default)."
        """

        if not self.canRunRemoteCmd(): 
            return None

        try:
            fetchInfo = self.repo.remotes.origin.push(no_thin=True)[0]
        except exc.GitCommandError as e:
            print(dir(e))
            print(e)
            raise


        if fetchInfo.flags & fetchInfo.ERROR:
            try:
                raise IOError("An error occured while trying to push the GIT repository from the server. Error flag: '" + 
                          str(fetchInfo.flags) + "', message: '" + str(fetchInfo.note) + "'.")
            except:
                IOError("An error occured while trying to push the GIT repository from the server.")
        return fetchInfo
Adding the no_thin argument to the GIT push because we had some issues pushing previously.
         According to http://stackoverflow.com/questions/16586642/git-unpack-error-on-push-to-gerrit#comment42953435_23610917,
         "a new optimization which causes git to send as little data as possible over the network caused this bug to manifest, 
          so my guess is --no-thin just turns these optimizations off. From git push --help: "A thin transfer significantly 
                  reduces the amount of sent data when the sender and receiver share many of the same objects in common." (--thin is the default)."