def __init__(self, current_branch, args, commit_subject=None,
                 commit_description=None, no_send_mail=False, argv=None):
        self.__branch = current_branch
        self.__current_head = utils.get_head_commit(
                current_branch=self.__branch)

        self.__rietveld_info = utils.RietveldInfo.from_branch(
                branch_name=self.__branch) or utils.RietveldInfo(self.__branch)
        self.__update_rietveld_info_from_args(args)

        # Add remote info if it isn't already there.
        if self.__rietveld_info.remote_info is None:
            remote_info = utils.get_remote_info(current_branch=self.__branch)
            self.__rietveld_info.remote_info = remote_info

        self.__rietveld_info.save()

        # TODO(dhermes): Should we check if the subject is Truth-y?
        if (commit_subject is None) ^ (commit_description is None):
            raise GitRvException('Subject and description must either both be '
                                 'specified or both be left out.')

        # Only need to check commit_subject since above also guarantees that
        # commit_description will also be non-null.
        self.__commit_message_overridden = commit_subject is not None
        commit_subject, commit_description = self.__get_commit_message_parts(
            commit_subject, commit_description)
        self.__commit_subject = commit_subject
        self.__commit_description = commit_description
        self.__argv = argv
        self.__no_send_mail = no_send_mail
        self.state = self.STARTING
        self.advance()
Starts the watcher.
dataset/ETHPy150Open googlearchive/git-rv/export.py/ExportAction.__init__--crossover with--dataset/ETHPy150Open DevTable/gantryd/gantryd/componentwatcher.py/ComponentWatcher.start