def start_transaction(self):
        """Begin a transaction to group operations on the refpkg.

        All the operations until the next call to
        ``commit_transaction`` will be recorded as a single operation
        for rollback and rollforward, and recorded with a single line
        in the log.
        """
        if self.current_transaction:
            raise ValueError("There is already a transaction going")
        else:
            initial_state = copy.deepcopy(self.contents)
            self.current_transaction = {'rollback': initial_state,
                                        'log': '(Transaction left no log message)'}