|
|
@@ -92,6 +92,16 @@ class Command(BaseCommand): |
|
|
|
msg = "unknown remote: \x0302{0}\x0301".format(remote_name) |
|
|
|
self.reply(self.data, msg) |
|
|
|
|
|
|
|
def get_time_since(self, date): |
|
|
|
diff = time.mktime(time.gmtime()) - date |
|
|
|
if diff < 60: |
|
|
|
return "{0} seconds".format(diff) |
|
|
|
if diff < 60 * 60: |
|
|
|
return "{0} minutes".format(int(diff / 60)) |
|
|
|
if diff < 60 * 60 * 24: |
|
|
|
return "{0} hours".format(int(diff / 60 / 60)) |
|
|
|
return "{0} days".format(int(diff / 60 / 60 / 24)) |
|
|
|
|
|
|
|
def do_help(self): |
|
|
|
"""Display all commands.""" |
|
|
|
help = { |
|
|
@@ -106,7 +116,7 @@ class Command(BaseCommand): |
|
|
|
for key in sorted(help.keys()): |
|
|
|
subcommands += "\x0303{0}\x0301 ({1}), ".format(key, help[key]) |
|
|
|
subcommands = subcommands[:-2] # Trim last comma and space |
|
|
|
msg = "sub-commands are: {0}; repos are: {1}. Syntax: !git \x0303subcommand\x0301 \x0302repo\x0301" |
|
|
|
msg = "sub-commands are: {0}; repos are: {1}. Syntax: !git \x0303subcommand\x0301 \x0302repo\x0301." |
|
|
|
self.reply(self.data, msg.format(subcommands, self.get_repos())) |
|
|
|
|
|
|
|
def do_branch(self): |
|
|
@@ -191,25 +201,18 @@ class Command(BaseCommand): |
|
|
|
|
|
|
|
def do_status(self): |
|
|
|
"""Check whether we have anything to pull.""" |
|
|
|
last = self.repo.head.object.committed_date |
|
|
|
diff = time.mktime(time.gmtime()) - last |
|
|
|
if diff < 60: |
|
|
|
since = "{0} seconds".format(diff) |
|
|
|
elif diff < 60 * 60: |
|
|
|
since = "{0} minutes".format(int(diff / 60)) |
|
|
|
elif diff < 60 * 60 * 24: |
|
|
|
since = "{0} hours".format(int(diff / 60 / 60)) |
|
|
|
else: |
|
|
|
since = "{0} days".format(int(diff / 60 / 60 / 24)) |
|
|
|
|
|
|
|
remote = self.get_remote() |
|
|
|
if not remote: |
|
|
|
return |
|
|
|
since = self.get_time_since(self.repo.head.object.committed_date) |
|
|
|
result = remote.fetch(dry_run=True) |
|
|
|
updated = [info for info in result if info.flags != info.HEAD_UPTODATE] |
|
|
|
|
|
|
|
if [info for info in result if info.flags != info.HEAD_UPTODATE]: |
|
|
|
msg = "last local commit was {0}. Remote is \x02ahead\x0F of local copy." |
|
|
|
self.reply(self.data, msg.format(since)) |
|
|
|
else: |
|
|
|
msg = "last commit was {0} ago. Local copy is \x02up-to-date\x0F with remote." |
|
|
|
if updated: |
|
|
|
latest = max([info.commit.committed_date for info in updated]) |
|
|
|
remote_since = self.get_time_since(latest) |
|
|
|
msg = "last local commit was \x02{0}\x0F ago; last remote commit was \x02{1}\x0F ago." |
|
|
|
self.reply(self.data, msg.format(since, remote_since)) |
|
|
|
else: |
|
|
|
msg = "last commit was \x02{0}\x0F ago. Local copy is up-to-date with remote." |
|
|
|
self.reply(self.data, msg.format(since)) |