Don't divide by zero in progress meter

If there are no projects to fetch, the progress meter would
have divided by zero during `repo sync`, and that throws a
ZeroDivisionError.  Instead we report the progress with an
unknown amount remaining.

Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/progress.py b/progress.py
index 89d6c5b..580ae88 100644
--- a/progress.py
+++ b/progress.py
@@ -16,7 +16,7 @@
 import sys
 
 class Progress(object):
-  def __init__(self, title, total):
+  def __init__(self, title, total=0):
     self._title = title
     self._total = total
     self._done = 0
@@ -24,22 +24,35 @@
 
   def update(self, inc=1):
     self._done += inc
-    p = (100 * self._done) / self._total
 
-    if self._lastp != p:
-      self._lastp = p
-      sys.stderr.write('\r%s: %3d%% (%d/%d)  ' % (
+    if self._total <= 0:
+      sys.stderr.write('\r%s: %d, ' % (
+        self._title,
+        self._done))
+      sys.stderr.flush()
+    else:
+      p = (100 * self._done) / self._total
+
+      if self._lastp != p:
+        self._lastp = p
+        sys.stderr.write('\r%s: %3d%% (%d/%d)  ' % (
+          self._title,
+          p,
+          self._done,
+          self._total))
+        sys.stderr.flush()
+
+  def end(self):
+    if self._total <= 0:
+      sys.stderr.write('\r%s: %d, done.  \n' % (
+        self._title,
+        self._done))
+      sys.stderr.flush()
+    else:
+      p = (100 * self._done) / self._total
+      sys.stderr.write('\r%s: %3d%% (%d/%d), done.  \n' % (
         self._title,
         p,
         self._done,
         self._total))
       sys.stderr.flush()
-
-  def end(self):
-    p = (100 * self._done) / self._total
-    sys.stderr.write('\r%s: %3d%% (%d/%d), done.  \n' % (
-      self._title,
-      p,
-      self._done,
-      self._total))
-    sys.stderr.flush()