Installer: Separate infrastructure and environment apps.

Have two separate application managers, one for installing apps on the
dodo infra, and nother installing on individual environments.

Change-Id: I1b24f008e30c5533c48c22ea92328bc4bb7abc54
diff --git a/core/installer/repoio.go b/core/installer/repoio.go
index ffb4078..c5e80c6 100644
--- a/core/installer/repoio.go
+++ b/core/installer/repoio.go
@@ -102,10 +102,18 @@
 	if err != nil {
 		return nil
 	}
-	return wt.Pull(&git.PullOptions{
+	err = wt.Pull(&git.PullOptions{
 		Auth:  auth(r.signer),
 		Force: true,
 	})
+	if err == nil {
+		return nil
+	}
+	if errors.Is(err, git.NoErrAlreadyUpToDate) {
+		return nil
+	}
+	// TODO(gio): check `remote repository is empty`
+	return nil
 }
 
 func (r *repoIO) CommitAndPush(message string) error {