Example #1
0
    def orig_data(self, index):
        commit = self._commits[index.row()]
        column = index.column()
        field = self._columns[column]

        if field in TIME_FIELDS:
            if field == 'authored_date':
                _timestamp = commit.authored_date
                _utc_offset = altz_to_utctz_str(commit.author_tz_offset)
                _tz = Timezone(_utc_offset)
            elif field == 'committed_date':
                _timestamp = commit.committed_date
                _utc_offset = altz_to_utctz_str(commit.committer_tz_offset)
                _tz = Timezone(_utc_offset)
            value = (_timestamp, _tz)
        elif field in ACTOR_FIELDS:
            actor = eval("commit." + field.split('_')[0])
            if '_email' in field:
                value = actor.email
            else:
                value = actor.name
        elif field == "message":
            value = commit.message
        elif field == "children":
            if commit in self._children:
                value = list(self._children[commit])
            else:
                value = []
        elif field == "parents":
            value = list(commit.parents)
        else:
            value = eval("commit." + field)

        return value
Example #2
0
    def orig_data(self, index):
        commit = self._commits[index.row()]
        column = index.column()
        field = self._columns[column]

        if field in TIME_FIELDS:
            if field == "authored_date":
                _timestamp = commit.authored_date
                _utc_offset = altz_to_utctz_str(commit.author_tz_offset)
                _tz = Timezone(_utc_offset)
            elif field == "committed_date":
                _timestamp = commit.committed_date
                _utc_offset = altz_to_utctz_str(commit.committer_tz_offset)
                _tz = Timezone(_utc_offset)
            value = (_timestamp, _tz)
        elif field in ACTOR_FIELDS:
            actor = eval("commit." + field.split("_")[0])
            if "_email" in field:
                value = actor.email
            else:
                value = actor.name
        elif field == "message":
            value = commit.message
        elif field == "children":
            if commit in self._children:
                value = list(self._children[commit])
            else:
                value = []
        elif field == "parents":
            value = list(commit.parents)
        else:
            value = eval("commit." + field)

        return value
Example #3
0
 def __repr__(self):
     """Representation of ourselves in git reflog format"""
     act = self.actor
     time = self.time
     return self._fmt % (self.oldhexsha, self.newhexsha, act.name,
                         act.email, time[0], altz_to_utctz_str(
                             time[1]), self.message)
Example #4
0
 def format(self):
     """:return: a string suitable to be placed in a reflog file"""
     act = self.actor
     time = self.time
     return u"{0} {1} {2} <{3}> {4!s} {5}\t{6}\n".format(
         self.oldhexsha, self.newhexsha, act.name, act.email, time[0],
         altz_to_utctz_str(time[1]), self.message)
Example #5
0
 def format(self):
     """:return: a string suitable to be placed in a reflog file"""
     act = self.actor
     time = self.time
     return u"{0} {1} {2} <{3}> {4!s} {5}\t{6}\n".format(
         self.oldhexsha, self.newhexsha, act.name, act.email, time[0], altz_to_utctz_str(time[1]), self.message
     )
Example #6
0
 def commit(self):
     # Calc tree hash
     treedata = b''
     for entry in sorted(os.listdir(self.repo_path)):
         if entry == '.git': continue
         with open(os.path.join(self.repo_path, entry)) as f:
             data_hash = git_object_hash('blob', f.read().encode()).digest()
             treedata += b'100644 ' + entry.encode() + b'\x00' + data_hash
     tree_hash = git_object_hash('tree', treedata).hexdigest()
     # Serialize commit
     commit_data = b'tree ' + tree_hash.encode() + b'\n'
     commit_data += b'parent ' + self.repo.head.commit.hexsha.encode(
     ) + b'\n'
     # Random author
     author = Actor(get_full_name(), get_email_address())
     # Calc timestamp
     unix_time = int(time())
     is_dst = daylight and localtime().tm_isdst > 0
     offset = altzone if is_dst else timezone
     datetime = str(unix_time) + ' ' + altz_to_utctz_str(offset)
     commit_data += b'author ' + author.name.encode(
     ) + b' <' + author.email.encode() + b'> ' + datetime.encode() + b'\n'
     commit_data += b'committer ' + author.name.encode(
     ) + b' <' + author.email.encode() + b'> ' + datetime.encode() + b'\n'
     commit_data += b'\n'
     # Randomize commit message to feature proof-of-work
     msg = calc_pow(commit_data)
     return self.repo.index.commit(msg,
                                   author=author,
                                   committer=author,
                                   author_date=datetime,
                                   commit_date=datetime)
Example #7
0
def commit_from_binsha(repo, binsha, org_commit, parents=None):
    tree = Tree.new(repo, bin_to_hex(binsha))

    env = os.environ

    offset = altz_to_utctz_str(org_commit.author_tz_offset)
    date = org_commit.authored_date
    env[Commit.env_author_date] = '{} {}'.format(date, offset)

    offset = altz_to_utctz_str(org_commit.committer_tz_offset)
    date = org_commit.committed_date
    env[Commit.env_committer_date] = '{} {}'.format(date, offset)

    return Commit.create_from_tree(repo, tree, org_commit.message, parents,
                                   head=True,
                                   author=org_commit.author,
                                   committer=org_commit.committer)
Example #8
0
 def format(self) -> str:
     """:return: a string suitable to be placed in a reflog file"""
     act = self.actor
     time = self.time
     return "{} {} {} <{}> {!s} {}\t{}\n".format(self.oldhexsha,
                                                 self.newhexsha, act.name,
                                                 act.email, time[0],
                                                 altz_to_utctz_str(time[1]),
                                                 self.message)
Example #9
0
        def assert_rval(rval, veri_time, offset=0):
            assert len(rval) == 2
            assert isinstance(rval[0], int) and isinstance(rval[1], int)
            assert rval[0] == veri_time
            assert rval[1] == offset

            # now that we are here, test our conversion functions as well
            utctz = altz_to_utctz_str(offset)
            assert isinstance(utctz, string_types)
            assert utctz_to_altz(verify_utctz(utctz)) == offset
Example #10
0
        def assert_rval(rval, veri_time, offset=0):
            assert len(rval) == 2
            assert isinstance(rval[0], int) and isinstance(rval[1], int)
            assert rval[0] == veri_time
            assert rval[1] == offset

            # now that we are here, test our conversion functions as well
            utctz = altz_to_utctz_str(offset)
            assert isinstance(utctz, string_types)
            assert utctz_to_altz(verify_utctz(utctz)) == offset
Example #11
0
        def assert_rval(rval, veri_time, offset=0):
            self.assertEqual(len(rval), 2)
            self.assertIsInstance(rval[0], int)
            self.assertIsInstance(rval[1], int)
            self.assertEqual(rval[0], veri_time)
            self.assertEqual(rval[1], offset)

            # now that we are here, test our conversion functions as well
            utctz = altz_to_utctz_str(offset)
            self.assertIsInstance(utctz, string_types)
            self.assertEqual(utctz_to_altz(verify_utctz(utctz)), offset)
Example #12
0
        def assert_rval(rval, veri_time, offset=0):
            self.assertEqual(len(rval), 2)
            self.assertIsInstance(rval[0], int)
            self.assertIsInstance(rval[1], int)
            self.assertEqual(rval[0], veri_time)
            self.assertEqual(rval[1], offset)

            # now that we are here, test our conversion functions as well
            utctz = altz_to_utctz_str(offset)
            self.assertIsInstance(utctz, string_types)
            self.assertEqual(utctz_to_altz(verify_utctz(utctz)), offset)
Example #13
0
File: util.py Project: euneon/kenja
def commit_from_binsha(repo, binsha, org_commit, parents=None):
    env = os.environ

    author_date = "%d %s" % (org_commit.authored_date, altz_to_utctz_str(org_commit.author_tz_offset))
    env[Commit.env_author_date] = author_date

    committer_date = "%d %s" % (org_commit.committed_date, altz_to_utctz_str(org_commit.committer_tz_offset))
    env[Commit.env_committer_date] = committer_date

    env[Actor.env_author_name] = org_commit.author.name.encode(org_commit.encoding)
    env[Actor.env_author_email] = org_commit.author.email or ""

    env[Actor.env_committer_name] = org_commit.committer.name.encode(org_commit.encoding)
    env[Actor.env_committer_email] = org_commit.committer.email or ""

    message = org_commit.message.encode(org_commit.encoding)

    tree = Tree.new(repo, bin_to_hex(binsha))

    return Commit.create_from_tree(repo, tree, message, parents, True)
Example #14
0
 def __repr__(self):
     """Representation of ourselves in git reflog format"""
     act = self.actor
     time = self.time
     return self._fmt % (self.oldhexsha, self.newhexsha, act.name, act.email,
                         time[0], altz_to_utctz_str(time[1]), self.message)