external/repo.git
23 months agoRevert "Represent git-submodule as nested projects" master v1.11.1
Shawn O. Pearce [Fri, 26 Oct 2012 19:18:00 +0000 (12:18 -0700)]
Revert "Represent git-submodule as nested projects"

This reverts commit 69998b0c6ff724bf620480140ccce648fec7d6a9.
Broke Android's non-gitmodule use case.

Conflicts:
project.py
subcmds/sync.py

Change-Id: I68ceeb63d8ee3b939f85a64736bdc81dfa352aed

23 months agorepo selfupdate: Fix _PostRepoUpgrade takes 2 arguments
Shawn O. Pearce [Fri, 26 Oct 2012 19:23:05 +0000 (12:23 -0700)]
repo selfupdate: Fix _PostRepoUpgrade takes 2 arguments

Change-Id: I1cf9e0674ea366ddce96c949e0bc085e3452b25a

23 months agoAdd a PGP key for cco3@android.com v1.11.0
Conley Owens [Mon, 1 Oct 2012 23:12:28 +0000 (16:12 -0700)]
Add a PGP key for cco3@android.com

This change adds a PGP key to allow cco3@android.com to sign releases.

Change-Id: I18a70c8b7d8f272dd1aad9d6b2e4a237ef35af33

23 months agoUpdate PGP keys during _PostRepoUpgrade in `sync`
Conley Owens [Mon, 1 Oct 2012 23:12:28 +0000 (16:12 -0700)]
Update PGP keys during _PostRepoUpgrade in `sync`

Previously, if a key was added, a client wouldn't add the key during
the sync step.  This would cause issues if a new key were added and a
subsequent release were signed by that key.

Change-Id: I4fac317573cd9d0e8da62aa42e00faf08bfeb26c

23 months agoMerge "sync: Run gc --auto in parallel"
Shawn Pearce [Fri, 26 Oct 2012 00:38:05 +0000 (17:38 -0700)]
Merge "sync: Run gc --auto in parallel"

23 months agoMerge "project: Support config args in git command callables"
Shawn Pearce [Fri, 26 Oct 2012 00:36:03 +0000 (17:36 -0700)]
Merge "project: Support config args in git command callables"

23 months agoMerge "sync: Keep a moving average of last fetch times"
Shawn Pearce [Fri, 26 Oct 2012 00:35:15 +0000 (17:35 -0700)]
Merge "sync: Keep a moving average of last fetch times"

23 months agoMerge "sync: Order projects according to last fetch time"
Shawn Pearce [Fri, 26 Oct 2012 00:33:36 +0000 (17:33 -0700)]
Merge "sync: Order projects according to last fetch time"

2 years agoFix pylint warnings introduced by the submodule patch
Che-Liang Chiou [Thu, 25 Oct 2012 20:44:11 +0000 (13:44 -0700)]
Fix pylint warnings introduced by the submodule patch

"69998b0 Represent git-submodule as nested projects" has introduced a
few pylint warnings.

W0612:1439,8:Project._GetSubmodules.get_submodules: Unused variable 'sub_gitdir'
W0613:1424,36:Project._GetSubmodules.get_submodules: Unused argument 'path'
W0612:1450,25:Project._GetSubmodules.parse_gitmodules: Unused variable 'e'
W0622:516,8:Sync.Execute: Redefining built-in 'all'

Change-Id: I84378e2832ed1b5ab023e394d53b22dcea799ba4

2 years agoMerge "Use modern Python exception syntax"
Conley Owens [Thu, 25 Oct 2012 17:03:36 +0000 (10:03 -0700)]
Merge "Use modern Python exception syntax"

2 years agoMerge "Add regex matching to repo list command"
Conley Owens [Thu, 25 Oct 2012 17:00:41 +0000 (10:00 -0700)]
Merge "Add regex matching to repo list command"

2 years agoMerge "Add pylint configuration and instructions"
Conley Owens [Thu, 25 Oct 2012 16:51:06 +0000 (09:51 -0700)]
Merge "Add pylint configuration and instructions"

2 years agoMerge "Change PyDev project version to "python 2.6""
Conley Owens [Thu, 25 Oct 2012 16:46:38 +0000 (09:46 -0700)]
Merge "Change PyDev project version to "python 2.6""

2 years agosync: Run gc --auto in parallel
Dave Borowitz [Wed, 24 Oct 2012 00:02:59 +0000 (17:02 -0700)]
sync: Run gc --auto in parallel

We can't just let this run wild with a high (or even low) -j, since
that would hose a system. Instead, limit the total number of threads
across all git gc subprocesses to the number of CPUs reported by the
multiprocessing module (available in Python 2.6 and above).

Change-Id: Icca0161a1e6116ffa5f7cfc6f5faecda510a7fb9

2 years agoAdd regex matching to repo list command
Olof Johansson [Tue, 9 Oct 2012 06:25:55 +0000 (08:25 +0200)]
Add regex matching to repo list command

The repo list -r command will execute a regex search for every
argument provided on both the project name and the project
worktree path.

Useful for finding rarely used gits.

Change-Id: Iaff90dd36c240b3d5d74817d11469be22d77ae03

2 years agoproject: Support config args in git command callables
Dave Borowitz [Wed, 24 Oct 2012 00:01:04 +0000 (17:01 -0700)]
project: Support config args in git command callables

Change-Id: I9d4d0d2b1aeebe41a6b24a339a154d258af665eb

2 years agosync: Keep a moving average of last fetch times
Dave Borowitz [Tue, 23 Oct 2012 23:35:39 +0000 (16:35 -0700)]
sync: Keep a moving average of last fetch times

Try to more accurately estimate which projects take the longest to
sync by keeping an exponentially weighted moving average (a=0.5) of
fetch times, rather than just recording the last observation. This
should discount individual outliers (e.g. an unusually large project
update) and hopefully allow truly slow repos to bubble to the top.

Change-Id: I72b2508cb1266e8a19cf15b616d8a7fc08098cb3

2 years agosync: Order projects according to last fetch time
Dave Borowitz [Tue, 23 Oct 2012 22:00:54 +0000 (15:00 -0700)]
sync: Order projects according to last fetch time

Some projects may consistently take longer to fetch than others, for
example a more active project may have many more Gerrit changes than a
less active project, which take longer to transfer. Use a simple
heuristic based on the last fetch time to fetch slower projects first,
so we do not tend to spend the end of the sync fetching a small number
of outliers.

This algorithm is probably not optimal, and due to inter-run latency
variance and Python thread scheduling, we may not even have good
estimates of a project sync time.

Change-Id: I9a463f214b3ed742e4d807c42925b62cb8b1745b

2 years agoUse modern Python exception syntax
Sarah Owens [Sun, 9 Sep 2012 22:37:57 +0000 (15:37 -0700)]
Use modern Python exception syntax

"except Exception as e" instead of "except Exception, e"

This is part of a transition to supporting Python 3.  Python >= 2.6
support "as" syntax.

Note: this removes Python 2.5 support.

Change-Id: I309599f3981bba2b46111c43102bee38ff132803

2 years agoChange PyDev project version to "python 2.6"
Sarah Owens [Wed, 24 Oct 2012 04:28:12 +0000 (21:28 -0700)]
Change PyDev project version to "python 2.6"

Repo is dropping support for Python <2.5 soon, so this updates the
PyDev configuration appropriately.

Change-Id: If327951e3a9fd9ff7513b931bfcfe6172dc8e4c5

2 years agoAdd pylint configuration and instructions
David Pursehouse [Mon, 22 Oct 2012 03:50:15 +0000 (12:50 +0900)]
Add pylint configuration and instructions

pylint configuration file (.pylintrc) is added, and submission
instructions are updated to include pylint usage steps.

Deprecated pylint suppression (`disable-msg`) is updated in a few
modules to make it work properly with the latest version (0.26).

Change-Id: I4ec2ef318e23557a374ecdbf40fe12645766830c

2 years agoRepresent git-submodule as nested projects
Che-Liang Chiou [Wed, 11 Jan 2012 03:28:42 +0000 (11:28 +0800)]
Represent git-submodule as nested projects

We need a representation of git-submodule in repo; otherwise repo will
not sync submodules, and leave workspace in a broken state.  Of course
this will not be a problem if all projects are owned by the owner of the
manifest file, who may simply choose not to use git-submodule in all
projects.  However, this is not possible in practice because manifest
file owner is unlikely to own all upstream projects.

As git submodules are simply git repositories, it is natural to treat
them as plain repo projects that live inside a repo project.  That is,
we could use recursively declared projects to denote the is-submodule
relation of git repositories.

The behavior of repo remains the same to projects that do not have a
sub-project within.  As for parent projects, repo fetches them and their
sub-projects as normal projects, and then checks out subprojects at the
commit specified in parent's commit object.  The sub-project is fetched
at a path relative to parent project's working directory; so the path
specified in manifest file should match that of .gitmodules file.

If a submodule is not registered in repo manifest, repo will derive its
properties from itself and its parent project, which might not always be
correct.  In such cases, the subproject is called a derived subproject.

To a user, a sub-project is merely a git-submodule; so all tips of
working with a git-submodule apply here, too.  For example, you should
not run `repo sync` in a parent repository if its submodule is dirty.

Change-Id: I541e9e2ac1a70304272dbe09724572aa1004eb5c

2 years agoMore coding style cleanup
David Pursehouse [Thu, 11 Oct 2012 07:44:48 +0000 (16:44 +0900)]
More coding style cleanup

Fixing more issues found with pylint.  Some that were supposed to
have been fixed in the previous sweep (Ie0db839e) but were missed:

C0321: More than one statement on a single line
W0622: Redefining built-in 'name'

And some more:

W0631: Using possibly undefined loop variable 'name'
W0223: Method 'name' is abstract in class 'name' but is not overridden
W0231: __init__ method from base class 'name' is not called

Change-Id: Ie119183708609d6279e973057a385fde864230c3

2 years agoSupport HTTP authentication using user input as fallback
JoonCheol Park [Wed, 10 Oct 2012 17:31:44 +0000 (02:31 +0900)]
Support HTTP authentication using user input as fallback

If repo could not find authentication credentials from ~/.netrc, this
patch tries to get user and password from user's console input. This
could be a good choice if user doesn't want to save his plain password
in ~/.netrc or if user doesn't know about the netrc usage.

The user will be prompted only if authentication infomation does not
exist in the password manager. Since main.py firstly loads auth
infomation from ~/.netrc, this will be executed only as fallback
mechanism.

Example:
$ repo upload .
Upload project xxx/ to remote branch master:
 branch yyy ( 1 commit, ...):
 to https://review.zzz.com/gerrit/ (y/N)? y

(repo may try to access to https://review.zzz.com/gerrit/ssh_info and
will get the 401 HTTP Basic Authentication response from server. If no
authentication info in ~/.netrc, This patch will ask username/passwd)

Authorization Required (Message from Web Server)
User: pororo
Password:
....
[OK ] xxx/

Change-Id: Ia348a4609ac40060d9093c7dc8d7c2560020455a

2 years agoRename "dir" variables
Mickaël Salaün [Sat, 29 Sep 2012 22:37:55 +0000 (00:37 +0200)]
Rename "dir" variables

The variable name "dir" conflicts with the name of a Python built-in
function: http://docs.python.org/library/functions.html#dir

Change-Id: I850f3ec8df7563dc85e21f2876fe5e6550ca2d8f

2 years agoMerge "Coding style cleanup"
Conley Owens [Tue, 9 Oct 2012 21:29:46 +0000 (14:29 -0700)]
Merge "Coding style cleanup"

2 years agoMerge "Expand ~ to user's home directory for --reference"
Conley Owens [Tue, 9 Oct 2012 20:46:10 +0000 (13:46 -0700)]
Merge "Expand ~ to user's home directory for --reference"

2 years agoCoding style cleanup
David Pursehouse [Mon, 24 Sep 2012 03:15:13 +0000 (12:15 +0900)]
Coding style cleanup

Fix the following issues reported by pylint:

C0321: More than one statement on a single line
W0622: Redefining built-in 'name'
W0612: Unused variable 'name'
W0613: Unused argument 'name'
W0102: Dangerous default value 'value' as argument
W0105: String statement has no effect

Also fixed a few cases of inconsistent indentation.

Change-Id: Ie0db839e7c57d576cff12d8c055fe87030d00744

2 years agoExpand ~ to user's home directory for --reference
Victor Boivie [Fri, 5 Oct 2012 12:50:05 +0000 (14:50 +0200)]
Expand ~ to user's home directory for --reference

This allows a user to have a 'repo init' as:
  $ repo init -u ... --reference=~/mirror

Change-Id: Ib85b7c8ffca9d732132c68fe9a8d7f0ab1fa9288

2 years agoRemove unreachable code
David Pursehouse [Wed, 3 Oct 2012 09:04:02 +0000 (18:04 +0900)]
Remove unreachable code

Change 9bb1816b removed part of a block of code, but left the
remaining part unreachable.  Remove it.

Change-Id: Icdc6061d00e6027df32dee9a3bad3999fe7cdcbc

2 years agoUpdate commit-msg hook to version from Gerrit v2.5-rc0
David Pursehouse [Wed, 3 Oct 2012 08:20:06 +0000 (17:20 +0900)]
Update commit-msg hook to version from Gerrit v2.5-rc0

Change-Id: I0d11ac0c24cd53386e996b7dd9bd37c89c789f60

2 years agoCorrect call to `sys.exit()`
David Pursehouse [Wed, 3 Oct 2012 10:11:28 +0000 (19:11 +0900)]
Correct call to `sys.exit()`

It should be `sys.exit()` not `os.exit()`.

Change-Id: Iaeeef456ddf2d17f5df2b712e50e3630bed856c3

2 years agoRemove `ImportError` class
David Pursehouse [Wed, 3 Oct 2012 06:47:02 +0000 (15:47 +0900)]
Remove `ImportError` class

The definition of `ImportError` redefines the Python built-in
class of the same name.

It is not used anywhere, so remove it.

Change-Id: I557ce28c93a3306fff72873dc6f477330fc33128

2 years agoMerge "manifest: record the original revision when in -r mode."
Conley Owens [Wed, 3 Oct 2012 23:49:12 +0000 (16:49 -0700)]
Merge "manifest: record the original revision when in -r mode."

2 years agomanifest: record the original revision when in -r mode.
Brian Harring [Sat, 29 Sep 2012 03:21:57 +0000 (20:21 -0700)]
manifest: record the original revision when in -r mode.

Currently when doing a sync against a revision locked manifest,
sync has no option but to fall back to sync'ing the entire refs space;
it doesn't know which ref to ask for that contains the sha1 it wants.

This sucks if we're in -c mode; thus when we generate a revision
locked manifest, record the originating branch- and try syncing that
branch first.  If the sha1 is found within that branch, this saves
us having to pull down the rest of the repo- a potentially heavy
saving.

If that branch doesn't have the desired sha1, we fallback to sync'ing
everything.

Change-Id: I99a5e44fa1d792dfcada76956a2363187df94cf1

2 years agoFix incorrect default_groups when parsing projects from XML manifest
David Holmer [Wed, 26 Sep 2012 05:58:48 +0000 (01:58 -0400)]
Fix incorrect default_groups when parsing projects from XML manifest

Change Details:
* Switch first default group to 'all' instead of 'default'

Change Benefits:
* More consistent with default_groups in the counterpart Save() function
* Fixes bug where command 'repo manifest' added an extra 'default'
  group to every output project element groups attribute. This bug was
  particularly confusing for projects which had 'groups="notdefault"'
  as they were output as 'groups="notdefault,default"' by 'repo manifest'

Change-Id: I5611c027a982d3394899466248b971910bec8c6b

2 years agosync: Support manual authentication to the manifest server
David Pursehouse [Fri, 14 Sep 2012 01:31:42 +0000 (10:31 +0900)]
sync: Support manual authentication to the manifest server

Add two new command line options, -u/--manifest-server-username and
-p/--manifest-server-password, which can be used to specify a username
and password to authenticate to the manifest server when using the
-s/--smart-sync or -t/--smart-tag option.

If -u and -p are not specified when using the -s or -t option, use
authentication credentials from the .netrc file (if there are any).

Authentication credentials from -u/-p or .netrc are not used if the
manifest server specified in the manifest file already includes
credentials.

Change-Id: I6cf9540d28f6cef64c5694e8928cfe367a71d28d

2 years agoClean up imports
David Pursehouse [Tue, 11 Sep 2012 05:33:51 +0000 (14:33 +0900)]
Clean up imports

manifest_xml: import `HEAD` and `R_HEADS` from correct module
version: import `HEAD` from correct module

`HEAD` and `R_HEADS` should be imported from the git_refs module,
where they are originally defined, rather than from the project
module.

repo: remove unused import of readline

cherry_pick: import standard modules on separate lines
smartsync: import subcmd modules explicitly from subcmd

Use:
  `import re
  import sys`
and
  `from subcmds.sync import Sync`

Instead of:
  `import sys, re`
and
  `from sync import Sync`

Change-Id: Ie10dd6832710939634c4f5c86b9ba5a9cd6fc92e

2 years agosync: Support authentication to manifest server with .netrc
David Pursehouse [Fri, 24 Aug 2012 01:21:02 +0000 (10:21 +0900)]
sync: Support authentication to manifest server with .netrc

When using the --smart-sync or --smart-tag option, and the specified
manifest server is hosted on a server that requires authentication,
repo sync fails with the error: HTTP 401 Unauthorized.

Add support for getting the credentials from the .netrc file.

If a .netrc file exists in the user's home directory, and it contains
credentials for the hostname of the manifest server specified in the
manifest, use the credentials to authenticate with the manifest server
using the URL syntax extension for Basic Authentication:

  http://user:password@host:port/path

Credentials from the .netrc file are only used if the manifest server
URL specified in the manifest does not already include credentials.

Change-Id: I06e6586e8849d0cd12fa9746789e8d45d5b1f848

2 years agoFix ManifestParseError when first child node is comment maint v1.10.4
Jooncheol Park [Sun, 26 Aug 2012 17:25:59 +0000 (02:25 +0900)]
Fix ManifestParseError when first child node is comment

If the first line of manifest.xml is a XML comment, root.childNodes[0]
is not a 'manifest' element node. The python minidom module will makes
a 'Comment' node as root.childNodes[0]. Since the original code only
checks whether the first child node is 'manifest', it couldn't do any
command including 'sync' due to the 'ManifestParseError' exception. This
patch could allow the comments between '<?xml ...?>' and '<manifest>' in
the manifest.xml file.

Change-Id: I0b81dea4f806965eca90f704c8aa7df49c579402

2 years agosync: Correct imports of `R_HEADS` and `HEAD`
David Pursehouse [Fri, 7 Sep 2012 00:52:04 +0000 (09:52 +0900)]
sync: Correct imports of `R_HEADS` and `HEAD`

`R_HEADS` is imported twice, from both the git_refs and project
modules.

It is actually defined in git_refs, and in project it is imported
from there, so the import of `R_HEADS` from project in the sync
module is redundant.  Remove it.

`HEAD` is imported from project, but like `R_HEADS` it is actually
defined in git_refs.  Import it from git_refs instead.

Change-Id: I8e2b0217d0d9f9f4ee5ef5b8cd0b026174ac52f4

2 years agosync: catch exceptions when connecting to the manifest server
David Pursehouse [Thu, 23 Aug 2012 01:21:26 +0000 (10:21 +0900)]
sync: catch exceptions when connecting to the manifest server

When connecting to the manifest server, exceptions can occur but
are not caught, resulting in the repo sync exiting with a python
traceback.

Add handling of the following exceptions:

- IOError, which can be raised for example if the manifest server
URL is malformed.
- xmlrpclib.ProtocolError, which can be raised if the connection
to the manifest server fails with HTTP error.
- xmlrpclib.Fault, which can be raised if the RPC call fails for
some other reason.

Change-Id: I3a4830aef0941debadd515aac776a3932e28a943

2 years agoFix errors when clone.bundle missing on server
Matt Gumbel [Thu, 30 Aug 2012 16:39:36 +0000 (09:39 -0700)]
Fix errors when clone.bundle missing on server

Catch curl failures to download clone.bundle; don't let git try to parse
the 404 page as a bundle file (was causing much user confusion).

This should eliminate false error messages from init and sync such as:
  error: '.repo/manifests.git/clone.bundle' does not look like a v2 bundle file
  fatal: Could not read bundle '.repo/manifests.git/clone.bundle'.
  error: RPC failed; result=22, HTTP code = 400

Signed-off-by: Matt Gumbel <matthew.k.gumbel@intel.com>
Change-Id: I7994f7c0baecfb45bb5a5850c48bd2a0ffabe773

2 years agoAllow projects to be specified as notdefault
Conley Owens [Mon, 13 Aug 2012 20:11:18 +0000 (13:11 -0700)]
Allow projects to be specified as notdefault

Instead of every group being in the group "default", every project
is now in the group "all".   A group that should not be downloaded
by default may be added to the group "notdefault".

This allows all group names to be positive (instead of removing groups
directly in the manifest with -default) and offers a clear way of
selecting every project (--groups all).

Change-Id: I99cd70309adb1f8460db3bbc6eff46bdcd22256f

2 years agoMake "repo sync -j<count>" stop properly on Ctrl-C.
David 'Digit' Turner [Wed, 5 Sep 2012 08:35:06 +0000 (10:35 +0200)]
Make "repo sync -j<count>" stop properly on Ctrl-C.

The threaded 'repo sync' implementation would very often freeze the
process when interrupted by the user with Ctrl-C. The only solution
being to kill -9 the process explicitly from another terminal.

The reason for this is best explained here:

http://snakesthatbite.blogspot.fr/2010/09/cpython-threading-interrupting.html

This patch makes all helper sync threads 'daemon', which allows the
process to terminate immediately on Ctrl-C.

Note that this will forcefully kill all threads in case of interruption; this
is generally a bad thing, but:

  1/ This is equivalent to calling kill -9 in another terminal, which
     is the _only_ thing that can currently stop the process.

  2/ There doesn't seem to be a way to tell the worker threads to
     gently stop when they are in a blocking operation anyway (even
     in the non-threaded case).

+ Do the same for "repo status -j<count>".

Change-Id: Ieaf45b0eacee36f35427f8edafd87415c2aa7be4

2 years agomanifest-format.txt: Add documentation for GetManifest RPC method
David Pursehouse [Tue, 21 Aug 2012 05:23:49 +0000 (14:23 +0900)]
manifest-format.txt: Add documentation for GetManifest RPC method

Add documentation of the GetManifest RPC method in the
manifest-server section.

Change-Id: I5cda5929bc8a0ca9d3f2b9da63216427041d2823

2 years ago`repo manifest`: default to stdout if no "-o"
Conley Owens [Tue, 7 Aug 2012 17:44:01 +0000 (10:44 -0700)]
`repo manifest`: default to stdout if no "-o"

Change-Id: I1b0ff9ed5df6386f0c2a851c6c48d063199fe663

2 years agoinit: Improved help text for the --mirror option
David Pursehouse [Wed, 15 Aug 2012 05:22:08 +0000 (14:22 +0900)]
init: Improved help text for the --mirror option

Change-Id: Ia6032865f9296b29524c2c25b72bd8e175b30489

2 years agoRemove unused imports
David Pursehouse [Wed, 22 Aug 2012 01:46:11 +0000 (10:46 +0900)]
Remove unused imports

There are several imports that are not used.  Remove them.

Change-Id: I2ac3be66827bd68d3faedcef7d6bbf30ea01d3f2

2 years agomanifest-format.txt: Fix a couple of minor spelling mistakes
David Pursehouse [Tue, 21 Aug 2012 04:52:18 +0000 (13:52 +0900)]
manifest-format.txt: Fix a couple of minor spelling mistakes

Change-Id: Ic2d266c8cf08827a71846db9d3711feb02885f01

2 years agoPatches should be submitted to master, not maint
David Pursehouse [Tue, 21 Aug 2012 07:26:07 +0000 (16:26 +0900)]
Patches should be submitted to master, not maint

Update SUBMITTING_PATCHES accordingly.

Change-Id: I6fd57a84c67d3762f1f23276d95cac2aeecd5e8f

2 years agoMerge branch 'master' into maint
Conley Owens [Tue, 14 Aug 2012 18:21:19 +0000 (11:21 -0700)]
Merge branch 'master' into maint

master's original purpose was to forge ahead on using git submodules,
but this route has been abandoned.

Change-Id: I164a9efc7821bcd1b941ad76649764722046081b

2 years agoOmit all default groups when generating a manifest
Dmitry Fink [Mon, 6 Aug 2012 21:52:29 +0000 (14:52 -0700)]
Omit all default groups when generating a manifest

One of the recent changes introduced implicit path:xxx and name:xxx groups
to every project, however they are not being stripped when generating
a manifest using "repo manifest" command resulting in clutter

Change-Id: Iec8610ba794b2fe4a6cdf0f59ca561595b66f9b5

2 years agoproject.py: Replace the relpath function with os.path.relpath
Mickaël Salaün [Sun, 5 Aug 2012 11:39:26 +0000 (13:39 +0200)]
project.py: Replace the relpath function with os.path.relpath

Change-Id: Ib313340344968211cecfc0a718f6072e41da1a91

2 years agoUse curl command line tool for clone.bundle v1.10.3
Shawn O. Pearce [Thu, 2 Aug 2012 21:57:37 +0000 (14:57 -0700)]
Use curl command line tool for clone.bundle

urllib2 is not thread safe and may be causing sync to lock up or
not work correctly on various platforms. Instead use the command
line curl program.

Change-Id: I36eaf18bb4df089d26ea99d533cb015e7c616eb0

2 years agosync: Honor --no-clone-bundle with -j1
Shawn O. Pearce [Thu, 2 Aug 2012 19:13:01 +0000 (12:13 -0700)]
sync: Honor --no-clone-bundle with -j1

Change-Id: I7c12902e386121a374d525be673092360c67c53d

2 years agoFix mirror mode v1.10.2
Shawn O. Pearce [Thu, 2 Aug 2012 18:46:22 +0000 (11:46 -0700)]
Fix mirror mode

Change-Id: Ica0e8392562a7ae5aad7e45441c1540e5e2b0238

2 years agoFix unsupported operand type(s) for +: 'int' and 'str' v1.10.1
Shawn O. Pearce [Thu, 2 Aug 2012 03:44:23 +0000 (20:44 -0700)]
Fix unsupported operand type(s) for +: 'int' and 'str'

Change-Id: I88455107d63daaa60c3b33c010aa8c730a590c70

2 years agoFix percent done on resumed /clone.bundle v1.10.0
Shawn O. Pearce [Thu, 2 Aug 2012 00:41:26 +0000 (17:41 -0700)]
Fix percent done on resumed /clone.bundle

The Content-Length when resuming is the number of bytes that
remain in the file. To compute the total size as expected by
the progress meter, we must add the bytes already stored.

While we are in this method fix uses of % operator to ensure
a tuple is always supplied.

Change-Id: Ic899231b5bc0ab43b3ddb1d29845f6390e820115

2 years agoFix bug in version_tuple to handle strings with -rc#
Chad Jones [Thu, 28 Jun 2012 20:12:13 +0000 (13:12 -0700)]
Fix bug in version_tuple to handle strings with -rc#

Example of version string that caused a problem: git version 1.7.11-rc3

Change-Id: I8a68b6b37f7b2ded23a1f8ae0d12131050a8807b
CC: sop@google.com
2 years agoAdd remote alias support in manifest
Yestin Sun [Mon, 2 Jul 2012 14:32:50 +0000 (07:32 -0700)]
Add remote alias support in manifest

The `alias` is an optional attribute in element `remote`. It can be
used to override attibute `name` to be set as the remote name in each
project's .git/config. Its value can be duplicated while attribute
`name` has to be unique across the manifest file. This helps each
project to be able to have same remote name which actually points
to different remote url.

It eases some automation scripts to be able to checkout/push to same
remote name but actually different remote url, like:

repo forall -c "git checkout -b work same_remote/work"
repo forall -c "git push same_remote work:work"

for example:
The manifest with 'alias' will look like:

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
  <remote alias="same_alias" fetch="git://git.external1.org/" name="ext1"
      review="http://review.external1.org"/>
  <remote alias="same_alias" fetch="git://git.external2.org/" name="ext2"
      review="http://review.external2.org"/>
  <remote alias="same_alias" fetch="ssh://git.internal.com:29418" name="int"
      review="http://review.internal.com"/>
  <default remote="int" revision="int-branch" sync-j="2"/>
  <project name="path/to/project1" path="project1" remote="ext1"/>
  <project name="path/to/project2" path="project2" remote="ext2"/>
  <project name="path/to/project3" path="project3"/>
  ...
</manifest>

In each project, use command "git remote -v"

project1:
same_alias  git://git.external1.org/project1 (fetch)
same_alias  git://git.external1.org/project1 (push)

project2:
same_alias  git://git.external2.org/project2 (fetch)
same_alias  git://git.external2.org/project2 (push)

project3:
same_alias  ssh://git.internal.com:29418/project3 (fetch)
same_alias  ssh://git.internal.com:29418/project3 (push)

Change-Id: I2c48263097ff107f0c978f3e83966ae71d06cb90

2 years agoAdd "repo overview" command.
Joe Hansche [Mon, 9 Jul 2012 16:59:56 +0000 (12:59 -0400)]
Add "repo overview" command.

The overview command shows an overview of each branch in all (or the
specified) projects.  The overview lists any local commits that have
not yet been merged into the project.

The report output is inspired by the report displayed following a
"repo prune" event, with the addition of listing the one-line log
messages for each commit that is not yet merged.

The report can also be filtered to show only active branches; by
default all branches that have commits beyond the upstream HEAD will
be listed.

Change-Id: Ibe67793991ad1aa38de3bc9747de4ba64e5591aa

2 years agoInject the project name into each projects groups.
Brian Harring [Fri, 15 Jun 2012 09:24:20 +0000 (02:24 -0700)]
Inject the project name into each projects groups.

For CrOS, we have scenarios were people checkout a smaller version
of our manifest via groups, and enable individual repositories as
needed for their work.  Previously this was via local_manifest
manipulation, which breaks via manifest-groups would require a
remove-project tag.

Via injecting the projects name into the projects groups, this
allows us to instead manipulate the configured groups allowing
the user to turn on/off projects as necessary.

Change-Id: I07b7918e16cc9dc28eb47e19a46a04dc4fd0be74

2 years agoupload: add --draft option.
Brian Harring [Sat, 28 Jul 2012 22:37:04 +0000 (15:37 -0700)]
upload: add --draft option.

Change-Id: I6967ff2f8163cd4116027b3f15ddb36875942af4

2 years agoDon't delete the branch config when switching branches. v1.9.6
Torne (Richard Coles) [Fri, 20 Jul 2012 14:32:19 +0000 (15:32 +0100)]
Don't delete the branch config when switching branches.

The fix for issue #46 in 5d016502ebc6 appears to break syncing in some
situations: the branch is deleted after the point where it's been
configured, which deletes part of its configuration and causes the
config to change each time you call `repo init`, alternating between a
configuration that works and one that doesn't.

Instead of deleting the branch with git branch -D, use git update-ref -d
which just deletes the ref (to avoid the rebase) without touching the
configuration for the branch that was set up during the first repo init.

This appears to ensure the config is left in a valid state all the time
no matter what combination of repo init commands you run, without
reintroducing the rebasing issue.

Change-Id: Iaadaa6e56a46840bbc593fa5b35cb5b34cd3ce69

2 years agoFix for failures with repo upload for projects that have a SHA1 for a revision; inste... v1.9.5
Chad Jones [Thu, 14 Jun 2012 23:53:40 +0000 (16:53 -0700)]
Fix for failures with repo upload for projects that have a SHA1 for a revision; instead use the default manifest revision

Change-Id: Ie5ef5a45ed6b0ca1a52a550df3cd7bd72e745f5f

2 years agoSingle quote http.proxy in GIT_CONFIG_PARAMETERS v1.9.4
Shawn O. Pearce [Wed, 13 Jun 2012 17:40:46 +0000 (10:40 -0700)]
Single quote http.proxy in GIT_CONFIG_PARAMETERS

Git requires the values in this environment variable to be
single quoted. repo must wrap the expression into '' before
adding it to the environment.

Change-Id: I20a1fb8772f9aa6e9fd5a0516c981c2ca020ef05

2 years agoDetach branch even when already on the latest revision using sync -d
Florian Vallee [Thu, 7 Jun 2012 15:11:42 +0000 (17:11 +0200)]
Detach branch even when already on the latest revision using sync -d

This patch fixes repo behaviour when running sync -d with unmodified
topic branches.

Prior to this patch sync -d would see the latest revision is already
checked out, thus staying on the branch. Since "-d" means detach we
should follow git's behaviour and actually detach from the branch in
that case.

Basic test case - after a fresh repo init + sync -
        * repo start --all testdetach
        * repo sync -d
        * repo status
-> status shows active topic branch "testdetach",
   should show :
nothing to commit (working directory clean)

Change-Id: Ic1351e6b5721b76557a51ab09f9dd42c38a4b415

2 years agoSupport automatically stashing local modifications during repo-rebase.
Joe Hansche [Mon, 5 Mar 2012 16:41:19 +0000 (11:41 -0500)]
Support automatically stashing local modifications during repo-rebase.

Currently repo-rebase requires that all modifications be committed
locally before it will allow the rebase. In high-velocity environments,
you may want to just pull in newer code without explicitly creating
local commits, which is typically achieved using git-stash.

If called with the --auto-stash command line argument, and it is
determined that the current index is dirty, the local modifications
are stashed, and the rebase continues.  If a stash was performed, that
stash is popped once the rebase completes.

Note that there is still a possibility that the git-stash pop will
result in a merge conflict.

Change-Id: Ibe3da96f0b4486cb7ce8d040639187e26501f6af

2 years agoFix switching manifest branches using repo init -b
Florian Vallee [Thu, 7 Jun 2012 15:19:26 +0000 (17:19 +0200)]
Fix switching manifest branches using repo init -b

See repo issue #46 :
https://code.google.com/p/git-repo/issues/detail?id=46

When using repo init -b on an already existing repository,
the next sync will try to rebase changes coming from the old manifest
branch onto the new, leading in the best case scenario to conflicts
and in the worst case scenario to an incorrect "mixed up" manifest.

This patch fixes this by deleting the "default" branch in the local
manifest repository when the -d init switch is used, thus forcing
repo to perform a fresh checkout of the new manifest branch

Change-Id: I379e4875ec5357d8614d1197b6afbe58f9606751

2 years agoRestore include support.
Brian Harring [Fri, 8 Jun 2012 03:05:35 +0000 (20:05 -0700)]
Restore include support.

Calculation of where the include file lives was broken by 23acdd3f14
since it resulted in looking for the first include in .repo, rather
than .repo/manifests.

While people can work around it via setting their includes to
manifests/<include-target>, that breaks down since each layer of
includes would then have to be relative.

As such, restore the behaviour back to 2644874d; manifests includes
are calculated relative to the manifest root (ie, .repo/manifests);
local manifests includes are calculated relative to .repo/ .

Change-Id: I74c19ba614c41d2f08cd3e9fd094f3c510e3bfd1

2 years agoUse GIT_CONFIG_PARAMETERS instead of -c for http.proxy v1.9.3
Shawn O. Pearce [Tue, 5 Jun 2012 22:11:15 +0000 (15:11 -0700)]
Use GIT_CONFIG_PARAMETERS instead of -c for http.proxy

Ancient versions of Git don't understand the -c command line flag
that we tried to use to pass http_proxy down into Git on Darwin.
Use the environment variable instead, to more gracefully degrade
with these old versions.

Change-Id: Iffffa32088c1fd803895b990b3377ecfec6a1b14

2 years agorepo: Add option review.URL.uploadtopic support v1.9.2
Anthony Russello [Fri, 1 Jun 2012 04:48:22 +0000 (00:48 -0400)]
repo: Add option review.URL.uploadtopic support

This patch adds the option to include topic branches by adding the
following to a .gitconfig file:

    uploadtopic = true

This option is only read in when the -t option is not already
specified at the command line.

Change-Id: I0e0eea49438bb4e4a21c2ac5bd498b68b5a9a845

2 years agoUse gerrit.googlesource.com/git-repo as the default URL
Shawn O. Pearce [Tue, 5 Jun 2012 14:57:24 +0000 (07:57 -0700)]
Use gerrit.googlesource.com/git-repo as the default URL

This is basically the same repository, but may be slightly more
up-to-date than the one on code.google.com/p/git-repo.

Change-Id: I5c99539f53231958eefb6993f00997c9adf0a3c9

2 years agoDetect git is not installed
Shawn O. Pearce [Tue, 5 Jun 2012 14:55:07 +0000 (07:55 -0700)]
Detect git is not installed

Fix detection for Git not being in $PATH during the initial
run of `repo init` in a new directory.

Change-Id: I2b1fcce1fb8afc47271f5c3bd2a28369009b2fb7

2 years agoPass http_proxy as -c http.proxy on Mac OS X
Shawn O. Pearce [Fri, 25 May 2012 14:57:44 +0000 (07:57 -0700)]
Pass http_proxy as -c http.proxy on Mac OS X

The system libcurl library seems to ignore http_proxy on Mac OS
X systems. Copy the http_proxy environment variable (if set) as
`git -c http.proxy` whenever running a Git command.

Change-Id: I0ab29336897178f70b85092601f9fcc306dd17e1

2 years agohooks/pre-auto-gc: look in sysfs to see if a battery is known.
Brian Harring [Fri, 25 May 2012 09:21:06 +0000 (02:21 -0700)]
hooks/pre-auto-gc: look in sysfs to see if a battery is known.

Barring any kernel bugs, if this directory exists and there is
a symlink in there (which will point to the battery object),
that means there is a battery known to the kernel.

No symlink should mean no battery as far as the kernel is concerned.

Change-Id: Ib12819a5bbb816f0ae5ca080e5812a2db08441e9

2 years agoAllow projects with groups=None v1.9.1
Colin Cross [Thu, 24 May 2012 22:39:14 +0000 (15:39 -0700)]
Allow projects with groups=None

Mirror manifest and repo projects are outside the manifest and
have no groups.  Allow project groups to be None for these
projects.

Change-Id: I3e1c4add894fe1c43aa4e77a1fc1558aa10dd191

2 years agoFix initial sync broken by sync-c option v1.9.0
Shawn O. Pearce [Thu, 24 May 2012 16:46:50 +0000 (09:46 -0700)]
Fix initial sync broken by sync-c option

Change-Id: I308753da8944e6ce5c46e3bfee1bcd41d5b7e292

2 years agoParse manifest and local_manifest together
Colin Cross [Sat, 21 Apr 2012 07:33:54 +0000 (00:33 -0700)]
Parse manifest and local_manifest together

Combine manifest and local_manifest into a single list of elements
before parsing.  This will allow elements in the local_manifest to
affect elements in the main manifest.

Change-Id: I4d34c9260b299a76be2960b07c0c3fe1af35f33c

2 years agoManifestXml: add include support
Brian Harring [Thu, 28 Apr 2011 12:04:41 +0000 (05:04 -0700)]
ManifestXml: add include support

Having the ability to include other manifests is a very practical feature
to ease the managment of manifest. It allows to divide a manifest into separate
files, and create different environment depending  on what we want to release

You can have unlimited recursion of include, the manifest configs will simply be concatenated
as if it was in a single file.

command "repo manifest" will create a single manifest, and not recreate the manifest hierarchy

for example:
Our developement manifest will look like:

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
  <default revision="platform/android/main" remote="intel"/>
  <include name="server.xml"/> <!-- The Server configuration -->
  <include name="aosp.xml" />  <!-- All the AOSP projects -->
  <include name="bsp.xml" />   <!-- The BSP projects that we release in source form -->
  <include name="bsp-priv.xml" /> <!-- The source of the BSP projects we release in binary form -->
</manifest>

Our release manifest will look like:

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
  <default revision="platform/android/release-ext" remote="intel"/>
  <include name="server.xml"/> <!-- The Server configuration -->
  <include name="aosp.xml" />  <!-- All the AOSP projects -->
  <include name="bsp.xml" />   <!-- The BSP projects that we release in source form -->
  <include name="bsp-ext.xml" /> <!-- The PREBUILT version of the BSP projects we release in binary form -->
</manifest>

And it is also easy to create and maintain feature branch with a manifest that looks like:

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
  <default revision="feature_branch_foobar" remote="intel"/>
  <include name="server.xml"/> <!-- The Server configuration -->
  <include name="aosp.xml" />  <!-- All the AOSP projects -->
  <include name="bsp.xml" />   <!-- The BSP projects that we release in source form -->
  <include name="bsp-priv.xml" /> <!-- The source of the BSP projects we release in binary form -->
</manifest>

Signed-off-by: Brian Harring <brian.harring@intel.com>
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
Change-Id: I833a30d303039e485888768e6b81561b7665e89d

2 years agorepo download: add --ff-only option
Pierre Tardy [Fri, 4 May 2012 10:18:12 +0000 (12:18 +0200)]
repo download: add --ff-only option

Allows to ff-only a gerrit patch
This patch is necessary to automatically ensure that the patch will
be correctly submitted on ff-only gerrit projects

You can now use:
repo download (--ff-only|-f) project changeid/patchnumber

This is useful to automate verification of fast forward status of a patch
in the context of build automation, and commit gating (e.g. buildbot)

Change-Id: I403a667557a105411a633e62c8eec23d93724b43
Signed-off-by: Erwan Mahe <erwan.mahe@intel.com>
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
2 years agorepo download: add --revert option
Erwan Mahe [Fri, 19 Aug 2011 11:56:09 +0000 (13:56 +0200)]
repo download: add --revert option

BZ: 4779
Allows to revert a gerrit patch
This patch is necessary for the on-demand creation of
engineering builds using buildbot

You can now use:
repo download [--revert|-r project changeid/patchnumber

This is useful to automate reverting of a patch
in the context of build automation, and regression bisection

Change-Id: I3985e80e4b2a230f83526191ea1379765a54bdcf
Signed-off-by: Erwan Mahe <erwan.mahe@intel.com>
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
2 years agorepo download: add --cherry-pick option
Pierre Tardy [Thu, 24 Mar 2011 15:28:18 +0000 (16:28 +0100)]
repo download: add --cherry-pick option

default option uses git checkout, and thus overwrite the previous
checkouts.  this is a problem for automated builds of several
changesets in the same project for daily builds of pending submission

You can now use:
repo download [--cherry-pick|-c] project changeid/patchnumber

This will parse the manifest, cd to the corresponding project
download the changes to FETCH_HEAD and cherry-pick the result.

This is useful to automate cherry-picking of a patch
in the context of build automation, and commit gating (e.g. buildbot)

Change-Id: Ib638afd87677f1be197afb7b0f73c70fb98909fe
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
2 years agoAvoid failing concat for multi-encoding filenames
Cezary Baginski [Mon, 23 Apr 2012 21:55:35 +0000 (23:55 +0200)]
Avoid failing concat for multi-encoding filenames

repo status should output filenames one by one instead of trying to
build a string from incompatible encodings (like utf-8 and sjis
filenames)

Change-Id: I52282236ececa562f109f9ea4b2e971d2b4bc045

2 years agoAdd sync-c option to manifest
Anatol Pomazau [Fri, 20 Apr 2012 21:41:59 +0000 (14:41 -0700)]
Add sync-c option to manifest

There are use-cases when fetching all branch is impractical and
we really need to fetch only one branch/tag.
e.g. there is a large project with binaries and every update of a
binary file is put to a separate branch.
The whole project history might be too large to allow users fetch it.

Add 'sync-c' option to 'project' and 'default' tags to make it possible
to configure 'sync-c' behavior at per-project and per-manifest level.

Note that currently there is no possibility to revert boolean flag from
command line. If 'sync-c' is set in manifest then you cannot make
full fetch by providing a repo tool argument.

Change-Id: Ie36fe5737304930493740370239403986590f593

2 years agoTreat groups= as default
Colin Cross [Mon, 23 Apr 2012 20:41:58 +0000 (13:41 -0700)]
Treat groups= as default

Previous incarnations of groups support left "groups=" in the
repo .config, which is now treated as "delete all the projects".
Treat empty groups configuration the same as no groups
configuration.

Change-Id: I57dab8dac55bdbf4cc181e2748cd2e4e510764f5

2 years agoFix syntax errors in subcmds/init.py
Colin Cross [Mon, 23 Apr 2012 20:39:48 +0000 (13:39 -0700)]
Fix syntax errors in subcmds/init.py

Fixes three errors:
Python doesn't like the line wrap after 'and'.
platform.system is a function, needs to be platform.system().
Typo all_platfroms instead of all_platforms.

Change-Id: Ia875e521bc01ae2eb321ec62d839173c00f86c2d

2 years agoAdd a --platform flag
Conley Owens [Mon, 16 Apr 2012 18:02:21 +0000 (11:02 -0700)]
Add a --platform flag

Projects may optionally specify their platform
(eg, groups="platform-linux" in the manifest).

By default, repo will automatically detect the platform. However,
users may specify --platform=[auto|all|linux|darwin].

Change-Id: Ie678851fb2fec5b0938aede01f16c53138a16537

2 years agoRefine groups functionality
Conley Owens [Mon, 16 Apr 2012 17:36:08 +0000 (10:36 -0700)]
Refine groups functionality

Every project is in group "default".  "-default" does not remove
it from this project.  All group names specified in the manifest
are positive names as opposed to a mix of negative and positive.

Specified groups are resolved in order.  If init is supplied with
--groups="group1,-group2", the following describes the project
selection when syncing:

  * all projects in "group1" will be added, and
  * all projects in "group2" will be removed.

Change-Id: I1df3dcdb64bbd4cd80d675f9b2d3becbf721f661

2 years agoAdd project annotation handling to repo
James W. Mills [Thu, 12 Apr 2012 20:04:13 +0000 (15:04 -0500)]
Add project annotation handling to repo

Allow the optional addition of "annotation" nodes nested under
projects.  Each annotation node must have "name" and "value"
attributes.  These name/value pairs will be exported into the
environment during any forall command, prefixed with "REPO__"

In addition, an optional "keep" attribute with case insensitive "true"
or "false" values can be included to determine whether the annotation
will be exported with 'repo manifest'

Change-Id: Icd7540afaae02c958f769ce3d25661aa721a9de8
Signed-off-by: James W. Mills <jameswmills@gmail.com>
2 years agoCheck if SHA1 presents in repository
Anatol Pomazau [Fri, 30 Mar 2012 01:06:43 +0000 (18:06 -0700)]
Check if SHA1 presents in repository

Previously repo had incorrect code that did not really check
if sha1 presents in a project. It worked for tags though.

Check if a revision (either tag or sha1) is present by using
'git rev_parse' functionality.

Change-Id: I1787f3348573948573948753987394839487572b

2 years agoAdd manifest groups v1.8.2
Colin Cross [Thu, 29 Mar 2012 03:15:45 +0000 (20:15 -0700)]
Add manifest groups

Allows specifying a list of groups with a -g argument to repo init.
The groups act on a group= attribute specified on projects in the
manifest.
All projects are implicitly labelled with "default" unless they are
explicitly labelled "-default".
Prefixing a group with "-" removes matching projects from the list
of projects to sync.
If any non-inverted manifest groups are specified, the default label
is ignored.

Change-Id: I3a0dd7a93a8a1756205de1d03eee8c00906af0e5
Reviewed-on: https://gerrit-review.googlesource.com/34570
Reviewed-by: Shawn Pearce <sop@google.com>
Tested-by: Shawn Pearce <sop@google.com>
2 years agoOption for 'repo diff' to generate output suitable for 'patch' cmd
pelya [Wed, 28 Mar 2012 11:49:58 +0000 (14:49 +0300)]
Option for 'repo diff' to generate output suitable for 'patch' cmd

The -u option causes 'repo diff' to generate diff output
with file paths relative to the repository root,
so the output can be applied to the Unix 'patch' command.
The name '-u' was selected for convenience, because
both 'diff' and 'git diff' accept the option with the same name
to generate an 'unified diff' output suitable for 'patch' command.

Change-Id: I79c8356db4ed20ecaccc258b3ba139db76666fe0
Reviewed-on: https://gerrit-review.googlesource.com/34380
Reviewed-by: Shawn Pearce <sop@google.com>
Tested-by: Shawn Pearce <sop@google.com>
2 years agoNew flag for repo upload: --current_branch (--cbr)
Daniel Sandler [Fri, 6 Apr 2012 14:39:32 +0000 (10:39 -0400)]
New flag for repo upload: --current_branch (--cbr)

A convenient equivalent to `repo upload --br=<current git branch>`.

Note that the head branch will be selected for each project
uploaded by repo, so different branches may be uploaded for
different projects.

Change-Id: I10ad8ceaa63f055105c2d847c6e329fa4226dbaf

2 years agoIgnore /clone.bundle on HTTP 401, 403 and 404 v1.8.1
Shawn O. Pearce [Thu, 22 Mar 2012 21:09:22 +0000 (14:09 -0700)]
Ignore /clone.bundle on HTTP 401, 403 and 404

401: Unauthorized, authentication may be required. This is usually
     handled internally by the HTTP client in Python. If it reaches
     our code in repo, the Python HTTP client didn't find a password
     in ~/.netrc that it could use.

403: Authentication was supplied, but is incorrect. It might be
     that the CDN doesn't want to offer this clone.bundle file
     to the client, but the Git fetch operation would still be
     successful. This might arise if branch level read controls
     were used in Gerrit Code Review and the /clone.bundle file
     contained branches not visible to the client.

404: The server has no /clone.bundle file available.

In all of these cases, sliently ignore the /clone.bundle file HTTP
error and let the Git operation take over.

Change-Id: I1787f3cac86b017351952bbb793fe5874d83c72b

2 years agoDo not change branch.foo.merge in case of manifest sync
Anatol Pomazau [Tue, 20 Mar 2012 20:45:00 +0000 (13:45 -0700)]
Do not change branch.foo.merge in case of manifest sync

In case of manifest/smart sync repo changes ".merge" config
option from branch to SHA. Doing 'repo upload' fails as
repo tries to upload to a remote branch that looks like SHA
(e.g. refs/for/23423423423423423423423)

Do not update the .merge in case if revision is SHA.

Change-Id: I9139708fa17f21eec5a7e23c3255333626bf529e

2 years agosync: --no-clone-bundle disables the clone bundle support v1.8.0
Shawn O. Pearce [Wed, 14 Mar 2012 22:36:59 +0000 (15:36 -0700)]
sync: --no-clone-bundle disables the clone bundle support

Change-Id: Ia9ed7da8451b273c1be620c3dd0dcad777b29096

2 years agoPermit - in URL schemes for special URLs
Shawn O. Pearce [Wed, 14 Mar 2012 22:22:28 +0000 (15:22 -0700)]
Permit - in URL schemes for special URLs

Clients might be using their own special git-remote-* helper that
has a hypen in its name. Permit - in the scheme part of the URL
when trying to decide if it is an SSH URL and assume it is *not*
SSH if the URL matches "foo-bar://" style.

Change-Id: I7ba2d810a614f6e605a441d5972902c4a14e73fd

2 years agoAdd support for Apache Digest authentication for repo init.
Xiaodong Xu [Tue, 31 Jan 2012 03:10:09 +0000 (11:10 +0800)]
Add support for Apache Digest authentication for repo init.

repo tool supports only Basic authentication for now. For those
who want to use this tool to manage their own projects, in case
the administrator has configured the Apache server with Digest
authentication method, users will fail to be authenticated when
they run the command 'repo init'.
Add the digest authentication password manager to the handler
list will fix this issue.

Since Git HTTP protocol will require the user be authenticated
for fetch operation first before pushing commits to the remote,
it is unlikely for the administrator to implement anonymous
read (aka pull) access and write access (aka push) for
authenticated user. Both read and write have to be authenticated.
Be aware that the user may have to add an extra line in his
~/.netrc file:
-------------------
account example.com
-------------------
where 'example.com' is the realm for Apache Digest authentication.

Change-Id: I76eb27b205554426d9ce1965deaaf727b87916cd
Signed-off-by: Xiaodong Xu <stid.smth@gmail.com>