1. 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
  2. 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
  3. 05 Aug, 2015 2 commits
  4. 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
  5. 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
  6. 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
  7. 29 Jul, 2015 3 commits
  8. 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
  9. 20 Jul, 2015 1 commit
  10. 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
  11. 13 Jul, 2015 1 commit
  12. 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
  13. 10 Jul, 2015 2 commits
  14. 06 Jul, 2015 4 commits
    • David Pursehouse's avatar
      forall: use smart sync override manifest if it exists · 6944cdb8
      David Pursehouse authored
      If a workspace is synced with the -s or -t option, the included projects
      may be different to those in the original manifest. However, when using
      the forall command, the list of the projects from the original manifest
      is used.
      
      If the smart sync manifest file exists, use it to override the original
      manifest.
      
      Change-Id: Iaefcbe148d2158ac046f158d98bbd8b5a5378ce7
      6944cdb8
    • David Pursehouse's avatar
      sync: Remove smart sync override manifest when not in smart sync mode · 59b41749
      David Pursehouse authored
      When syncing with the -s or -t option, a smart_sync_override.xml file
      is created. This file is left in the file system when syncing again
      without the -s or -t option.
      
      Remove the smart sync override manifest, if it exists, when not using
      the -s or -t option.
      
      Change-Id: I697a0f6405205ba5f84a4d470becf7cd23c07b4b
      59b41749
    • David Pursehouse's avatar
      forall: Don't try to get lrev of projects in mirror workspace · 30d13eea
      David Pursehouse authored
      git rev-parse fails for projects that don't have an explicit revision
      specified, and don't have a branch of the same name as the default
      revision. This can be the case in a workspace synced with the smart
      sync (-s) or smart tag (-t) option.
      
      Change-Id: I19bfe9fe7396170379415d85f10f6440dc6ea08f
      30d13eea
    • David Pursehouse's avatar
      sync: Improve error message when writing smart sync manifest fails · 727cc3e3
      David Pursehouse authored
      The error message only states that writing the manifest failed.
      
      Include the exception message, so it's easier to track down the reason
      that the write failed.
      
      Change-Id: I06e942c48a19521ba45292199519dd0a8bdb1de7
      727cc3e3
  15. 25 Jun, 2015 1 commit
  16. 22 Jun, 2015 1 commit
    • Than McIntosh's avatar
      Fix 'repo cherry-pick' to avoid hanging on commit-msg update. · db75704b
      Than McIntosh authored
      After performing the actual cherry-pick operation, the code
      in cherry_pick.py opens a pipe to 'git commit -F' to rewrite the commit
      message, emits the fixed-up commit msg to the pipe, then waits
      for 'git commit' to complete. The child 'git' process winds up
      hanging while reading from the pipe, however, since the parent
      process still has it open. To fix the hang, change the parent process
      to close its end of the pipe after it has emitted the message.
      
      Change-Id: I5929371e69a5b076f09009d00d40a2c72ac8ac33
      db75704b
  17. 19 Jun, 2015 1 commit
  18. 09 Jun, 2015 1 commit
  19. 04 Jun, 2015 4 commits
  20. 03 Jun, 2015 3 commits
    • Anthony King's avatar
      git_command: only decode when needed · cf738ed4
      Anthony King authored
      strings no longer need decoding, since unicode is str
      
      Change-Id: I9516d298fee7ddc058452394b7759327fe3aa7a8
      cf738ed4
    • Anthony King's avatar
      decode the buffer before appending · 6cfc68e1
      Anthony King authored
      output from a process is in bytes in python3. we need
      to decode it.
      
      in Python3, bytes don't have an encode attribute. use this
      to identify it.
      
      Change-Id: I152f2ec34614131027db680ead98b53f9b321ed5
      6cfc68e1
    • Wink Saville's avatar
      Teach _LinkFile._Link to handle globs. · 4c426ef1
      Wink Saville authored
      This allows a project to use globs in the linkfile src attribute. When
      a glob is used in the src the dest field must be a directory. Then
      _LinkFile._Link(self) calls will create symbolic links in the dest
      directory to all of the entries in the src as defined by the glob
      specification.
      
      Below all of the entries in master-configs/ will have symbolic links
      in <root dir>/configs directory:
      
        <project name="helloworld.git" path="apps/helloworld">
            <linkfile src="master-configs/*" dest="configs"/>
        </project>
      
      Change-Id: Idfed8fa47c83d2ca6e2b8e867731b8e2f9e2eb47
      4c426ef1