code: def add(self, filename, change=None):
          
          try:
              if not self.canAdd(filename):
                  raise errors.RevisionError('File is not under client path')
  
              if change is None:
                  self.run(['add', filename])
              else:
                  self.run(['add', '-c', str(change.change), filename])
  
              data = self.run(['fstat', filename])[0]
          except errors.CommandError as err:
              LOGGER.debug(err)
              raise errors.RevisionError('File is not under client path')
  
          rev = Revision(data, self)
  
          if isinstance(change, Changelist):
              change.append(rev)
  
          return rev
docs: Adds a new file to a changelist
  
          :param filename: File path to add
          :type filename: str
          :param change: Changelist to add the file to
          :type change: int
          :returns: :class:`.Revision`