1. 28 Aug, 2015 1 commit
    • Simran Basi's avatar
      GITC: Add repo start support. · b9a1b734
      Simran Basi authored
      Add repo start support for GITC checkouts. If the user is in
      the GITC FS view, they can now run repo start to check out
      the sources and create a new working branch.
      
      When "repo start" is called on a GITC project, the revision
      tag is set to an empty string and saved in a new tag:
      old-revision. This tells the GITC filesystem to display the
      local copy of the sources when being viewed. The local copy
      is created by pulling the project sources and the new branch
      is created based off the original project revision.
      
      Updated main.py to setup each command's gitc_manifest when
      appropriate.
      
      Updated repo sync's logic to sync opened projects and
      updating the GITC manifest file for the rest.
      
      Change-Id: I7e4809d1c4fc43c69b26f2f1bebe45aab0cae628
      b9a1b734
  2. 25 Aug, 2015 2 commits
  3. 20 Aug, 2015 6 commits
  4. 19 Aug, 2015 6 commits
  5. 18 Aug, 2015 1 commit
    • Simran Basi's avatar
      GITC: Add repo sync support. · bdb5271d
      Simran Basi authored
      Add repo sync support for GITC checkouts. If the user is in the
      GITC client directory they can still pull the sources as normal
      if they pass in the --force-gitc argument. Otherwise the user
      should call repo sync in the GITC view to update the user's
      remote view. (This works because .repo in the GITC view will
      link to .repo in the client config directory.)
      
      Part of the support for this change is the refactoring of GITC
      related code into gitc_utils.py.
      
      Change-Id: I2636aaa50b450b6f091309db8dd0e8f4dbdad579
      bdb5271d
  6. 17 Aug, 2015 1 commit
    • Dan Willemsen's avatar
      Copy clone-depth in `repo manifest` · 88409222
      Dan Willemsen authored
      This argument wasn't being copied, which caused syncs from generated
      manifests to pull down too much of the git history.
      
      Change-Id: I269bab788d4557267c081628b3f8c6aec7744e81
      88409222
  7. 12 Aug, 2015 2 commits
    • Dan Willemsen's avatar
      5d0c3a61
    • Simran Basi's avatar
      GITC: Add gitc-init subcommand to repo. · 1efc2b4a
      Simran Basi authored
      Adds the new gitc-init command to set up a GITC client. Gitc-init
      sets up the client directory and calls repo init within it. Once
      the repo is initialized, then generates a GITC manifest file
      by using git ls-remote on each project and retrieving the HEAD SHA
      to use as the revision attribute.
      
      Gitc-init inherits from and has all the options as repo init.
      
      Change-Id: Icd7e47e90eab752a77de7c80ebc98cfe16bf6de3
      1efc2b4a
  8. 05 Aug, 2015 2 commits
  9. 04 Aug, 2015 1 commit
    • Simon Ruggier's avatar
      Include project path in --force-sync error message · f9b7683a
      Simon Ruggier authored
      For projects that have been cloned outside of the repo command (or
      cloned a long time ago), commit abaa7f31
      introduced an error message to invite the user to use --force-sync.
      However, due to the risk of data loss, it's useful to know which
      project's git directory is being replaced before deciding whether or not
      to provide --force-sync.
      
      This change updates the exception's associated value to include the
      project's relative path and explain to the user how they can resolve the
      issue. A previous version of this commit used the project name. However,
      for projects that have multiple work trees, the name can be ambiguous,
      while the path clearly identifies which git directory will be replaced.
      
      Change-Id: If717e66fda4d19accc0a8e889a91f4cd4ff14dff
      f9b7683a
  10. 03 Aug, 2015 1 commit
    • Dan Willemsen's avatar
      Fix shallow clone behavior · eeab6860
      Dan Willemsen authored
      The existing code here makes sure that switching clone-depth from on to
      off actually causes the history to be fully restored. Unfortunately, it
      does this by fetching the full history every time the fetch spec
      changes. Switching between two clone-depth="1" branches will fetch far
      more than the top commit.
      
      Instead, when not using clone-depth, pass --depth=2147483647 to git
      fetch so that it ensures that we have the entire history. That is
      slightly less efficient, so limit it to only when there are shallow
      objects in the project by checking for the existance of the 'shallow'
      file.
      
      Change-Id: Iee0cfc9c6992c208344b1d9123769992412db67b
      eeab6860
  11. 31 Jul, 2015 5 commits
    • Simon Ruggier's avatar
      Include dest-branch attribute in the 'manifest' subcommand's output · 7e59de2b
      Simon Ruggier authored
      Change-Id: If4227d02005fddea82d9e698a373222100d8f710
      7e59de2b
    • Dan Willemsen's avatar
      Merge "Fix _ReferenceGitDir symlinking" · 163fdbf2
      Dan Willemsen authored
      163fdbf2
    • Conley Owens's avatar
      555be547
    • Dan Sandler's avatar
      Emit project info in case of sync exception. · c5cd433d
      Dan Sandler authored
      Previously repo would only print the failing project path if
      Sync_NetworkHalf returned false/empty, but if it threw an
      exception the print() was never called.
      
      Change-Id: I58c41de43930df5e34b21561c205e062a72e290f
      c5cd433d
    • Dan Willemsen's avatar
      Fix _ReferenceGitDir symlinking · 2a3e1521
      Dan Willemsen authored
      This fixes these errors:
      
        ...
        File ".repo/repo/project.py", line 2371, in _ReferenceGitDir
          os.symlink(os.path.relpath(src, os.path.dirname(dst)), dst)
        OSError: [Errno 17] File exists
      
      Which was happening for checkouts that were created before v1.12.8, when
      project-objects was created. Nothing had yet been forcing these
      checkouts to use project-objects, until the recent verification changes.
      
      In this OSError case, we already created the symlink, so src == dst, and
      the directory did not exist. This caused us to run os.makedirs the
      os.symlink on the same file.
      
      dst really should be the file in gitdir, not the target of that symlink
      if it exists. So just use realpath for the dotgit portion of the path.
      
      Change-Id: Iff5396a2093de91029c42cf38aa57131fd22981c
      2a3e1521
  12. 30 Jul, 2015 1 commit
    • Graham Christensen's avatar
      Support filtering by group on forall and list subcmd · 0369a069
      Graham Christensen authored
      Enable operating against groups of repositories. As it stands, it isn't
      compatible with `-r/--regex`.
      
      `repo forall -g groupname -c pwd` will  run `pwd` for all projects in
      groupname.
      
      `repo forall -g thisgroup,-butnotthisone -c pwd` will  run `pwd` for all
      projects in `thisgroup` but not `butnotthisone`.
      
      `repo list -g groupname -n` will list all the names of repos in
      `groupname`.
      
      Change-Id: Ia75c50ce52541d1c8cea2874b20a4db2e0e54960
      0369a069
  13. 29 Jul, 2015 3 commits
  14. 27 Jul, 2015 2 commits
    • Cassidy Burden's avatar
      Prevent repo info from crashing when default element doesn't exist. · 17af578d
      Cassidy Burden authored
      repo info will crash when using a manifest with no default element despite
      default being an optional element. Output nothing for "Manifest Branch" if no
      default element exists (or if no default revision exists).
      
      Change-Id: I7ebffa2408863837ba980f0ab6e593134400aea9
      17af578d
    • Kevin Degi's avatar
      InitGitDir: Clean up created directories · b1a07b82
      Kevin Degi authored
      If _InitGitDir fails, it leaves any progress it had made on the file
      system. This can cause subsequent calls to repo sync to behave
      differently. This is especially evident when _CheckDirReference() fails,
      since it will not be invoked when sync is retried because both the
      source and destination directories already exist.
      
      To address this, have _InitGitDir() clean up any directories it has created
      if it catches an exception. Also behave the same way for _InitWorkTree().
      
      Change-Id: Ic16bb3feea649e115b59bd44be294e89e3692aeb
      b1a07b82
  15. 20 Jul, 2015 1 commit
  16. 15 Jul, 2015 3 commits
    • Conley Owens's avatar
    • Conley Owens's avatar
    • Kevin Degi's avatar
      project.RemoteFetch: Handle depth cases more robustly · 679bac4b
      Kevin Degi authored
      The fetch logic for the case where depth is set and revision is a
      SHA1 has several failure modes that are not handled well by the
      current logic.
      
      1) 'git fetch <SHA1>' requires git version >= 1.8.3
      2) 'git fetch <SHA1>' can be prevented by a configuration option on the server.
      3) 'git fetch --depth=<N> <refspec>' can fail to contain a SHA1 specified by
         the manifest.
      
      Each of these cases cause infinite recursion when _RemoteFetch() tries to call
      itself with current_branch_only=False because current_branch_only is set to
      True when depth != None.
      
      To try to prevent the infinite recursion, we set self.clone_depth to None
      before the first retry of _RemoteFetch(). This will allow the Fetch to
      eventually succeed in the case where clone-depth is specified in the manifest.
      A user specified depth from the init command will still recurse infinitely.
      
      In addition, never try to fetch a SHA1 directly if the git version being used
      is not at least 1.8.3.
      
      Change-Id: I802fc17878c0929cfd63fff611633c1d3b54ecd3
      679bac4b
  17. 13 Jul, 2015 1 commit
  18. 11 Jul, 2015 1 commit
    • David Pursehouse's avatar
      Merge changes Iaefcbe14,I697a0f64,I19bfe9fe,I06e942c4 · 80e3a37a
      David Pursehouse authored
      * changes:
        forall: use smart sync override manifest if it exists
        sync: Remove smart sync override manifest when not in smart sync mode
        forall: Don't try to get lrev of projects in mirror workspace
        sync: Improve error message when writing smart sync manifest fails
      80e3a37a