summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | manifest-format: fix EMPTY keyword usageMike Frysinger2016-12-281-10/+10
| | | | | | | | | | | | | | | | The keyword EMPTY doesn't use parens. BUG=git-repo:140 Change-Id: I7cd28a09c401520a72e5c244a77d9d70385f1b61
* | Merge "init: Add no-tags and current branch options"Jonathan Nieder2016-12-092-2/+16
|\ \
| * | init: Add no-tags and current branch optionsNaseer Ahmed2016-12-012-2/+16
| | | | | | | | | | | | | | | | | | This avoids fetching tags and branches for huge manifests Change-Id: I19c9724d75364440b881b297d42b906f541f73ff
* | | Merge "Fix removing broken symlink in reference dir"David Pursehouse2016-12-061-7/+8
|\ \ \ | |/ / |/| |
| * | Fix removing broken symlink in reference dirCheuk Leung2016-06-291-7/+8
| | | | | | | | | | | | | | | | | | | | | Re-ordered to first create the symlink before checking the source file and remove the destination if the source does not exists. Change-Id: Iae923ba2ef0ba5a8dc1b8e42d8cc3f3708f773af
* | | Merge "Add a check and more output to protect against invalid REPO_URLs"David Pursehouse2016-10-291-1/+8
|\ \ \
| * | | Add a check and more output to protect against invalid REPO_URLsSebastian Schuberth2016-10-281-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you don't know that the url to git-repo itself can be overridden via REPO_URL, it's hard to debug cases where REPO_URL is accidentally set to another repository, e.g. inside a Jenkins CI job. What makes is even harder is that the ".repo/repo" directory gets silently removed in such cases as verifications fails, which makes it impossible to look at the cloned files to understand the problem. To better protect against such an issue, warn if the cloned git-repo repository does not contain a top-level "repo" file, and state that the ".repo/repo" directory will be removed in case of a clone failure. Change-Id: I697b4999205a5967910c0237772ccaada01e74d4
* | | | Merge "Fix checkout error when depth passed to repo init and revision is a sha1"Dan Willemsen2016-10-281-21/+21
|\ \ \ \
| * | | | Fix checkout error when depth passed to repo init and revision is a sha1Aymen Bouaziz2016-10-281-21/+21
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if direct fetch of a sha1 is not supported by git server and depth option is used, we fallback on syncing the upstream branch by ignoring depth option. This fallback doesn't work in next 2 cases: (1) upstream attribute is not specified in manifest (2) depth option is passed to repo init command (not with clone-depth attribute in manifest) This commit do the following: - fixes (1) by updating condition used to apply fallback first we retry with depth set to None, then by syncing all branches - fixes (2) by passing depth as argument of _RemoteFetch() method thus, its value is not set again to depth value passed to repo init command when applying fallback Change-Id: Ifd6fffafc49ba229df624b0d7b64c83d47619d17
* | | | Merge "implement optional '--all' in the abandon command"David Pursehouse2016-10-281-21/+49
|\ \ \ \
| * | | | implement optional '--all' in the abandon commandKyunam.jo2016-10-171-21/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | when you want to delete all local branches, you should be find all branches' name, and type them behind 'repo abandon' command. Usage: repo abandon --all [<project>...] Change-Id: I4d391f37fb9d89b8095488c585468eafc1a35f31
* | | | | Merge "_CheckDirReference: log actual error before suggesting --force-sync"Dan Willemsen2016-10-281-0/+1
|\ \ \ \ \
| * | | | | _CheckDirReference: log actual error before suggesting --force-syncMarc Herbert2016-10-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A recent backward incompatible change created confusion and loss of productivity and highlighted the very limited amount of information provided when repo sync fails; merely recommending to --force-sync and blow-up git repos without any hint as to why. The addition of this basic _error(...) call would have provided a clue and will in the future. BUG=Issue 232 TEST=simulate a breakage similar to the ones reported at https://groups.google.com/a/chromium.org/forum/#!topic/chromium-os-dev/2-0oCy_CX5s cd .repo/projects/src/third_party/libapps.git/ file info; rm info; ln -s wronglink info cd - repo sync src/third_party/libapps/ # error message now shows the failure Change-Id: Idd2f177a096f1ad686caa8c67cb361d594ccaa57
* | | | | | Add sso to list of known schemes for relative URLsJoe Kilner2016-10-271-2/+12
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | repo already special-cases sso:// URLs to behave similarly to https:// and rpc:// elsewhere in repo, but it forgot to do so here. Noticed when trying to use relative URLs in a manifest obtained using an sso:// URL. Change-Id: Ia11469a09bbd6e444dbc4f22c82f9bbe9f5fd083
* | | | | status: add -q/--quiet optionAndrew Wheeler2016-10-172-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The --quiet option reduces the output to just a list of projects with modified workspaces (and orphans if -o is specified) A common use case is when performing a full-workspace merge. The integrator will kick-off a merge via: repo forall -c git merge <some tag> And then produce a short list of conflicted projects via: repo status -q The integrator can then iteratively fix and clean up all conficted components. The merge is complete when: repo status -q returns no output. Change-Id: Ibbba8713eac35befd8287c95948874e23fd5c7e2
* | | | | Merge "sync: Fix semaphore release bug that causes thread 'leaks'"David Pursehouse2016-10-171-10/+12
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | sync: Fix semaphore release bug that causes thread 'leaks'Andrew Wheeler2016-10-111-10/+12
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When repo syncs a manifest that utilizes multiple branches in the same project, then the sync will use an extra thread for each "duplicate". For example, if the manifest includes the project "foo" and "bar" twice, then "repo sync -jN" will fetch with N+2 threads. This is caused by _FetchHelper() releasing the thread semaphore object each time it's called, even though _FetchProjectList() may call this function multiple times within the scope of a single thread. Fix by moving the thread semaphore release to _FetchProjectList(), which is only called once per thread instance. Change-Id: I1da78b145e09524d40457db5ca5c37d315432bd8
* / / / Removed duplication code in abandon.pyKyunam.jo2016-10-121-1/+0
|/ / / | | | | | | | | | | | | | | | | | | code about getting argument is duplicated. so this line is removed Change-Id: Id321b999c7dacdb403cd986cbf35f8db62efc157
* | | Support broken symlinks when cleaning obsolete pathsv1.12.37Dan Willemsen2016-09-271-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When there's a symlink to a directory, os.walk still lists the symlink in dirs, even if it isn't configured to follow symlinks. This will fail the listdirs check if the symlink is broken (either before or during the cleanup). So instead, check for directory symlinks and remove them using os.remove. Bug: Issue 231 Change-Id: I0ec45a26be566613a4a39bf694a3d9c6328481c2
* | | Revert "Repo: fall back to http, if ssh connection fails for http repos"v1.12.36Dan Willemsen2016-09-221-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 488bf092d5992bd1b8f8681c444f2cc283d05bcb. Issue 230 Change-Id: I3a5725301f576e1a2ac499cb6daa631895115640
* | | Merge "On project cleanup, don't remove nested projects"v1.12.35David Pursehouse2016-09-211-14/+57
|\ \ \
| * | | On project cleanup, don't remove nested projectsDan Willemsen2016-09-201-14/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When there are nested projects in a manifest, like on AOSP right now: <project path="build" name="platform/build" /> <project path="build/blueprint" name="platform/build/blueprint" /> <project path="build/kati" name="platform/build/kati" /> <project path="build/soong" name="platform/build/soong" /> And the top "build" project is removed (or renamed to remove the nesting), repo just wipes away everything under build/ and re-creates the projects that are still there. But it only checks to see if the build/ project is dirty, so if there are dirty files in a nested project, they'll just be blown away, and a fresh worktree checked out. Instead, behave similarly to how `git clean -dxf` behaves and preserve any subdirectories that have git repositories in them. This isn't as strict as git -- it does not check to see if the '.git' entry is a readable gitdir, just whether an entry named '.git' exists. If it encounters any errors removing files, we'll print them all out to stderr and tell the user that we were unable to clean up the obsolete project, that they should clean it up manually, then sync again. Change-Id: I2f6a7dd205a8e0b7590ca5369e9b0ba21d5a6f77
* | | | implement optional 'pushurl' in the manifest fileSteve Rae2016-09-204-1/+25
|/ / / | | | | | | | | | | | | | | | | | | | | | Allow the 'remote' element in the manifest file to define an optional 'pushurl' attribute which is passed into the .git/config file. Change-Id: If342d299d371374aedc4440645798888869c9714 Signed-off-by: Steve Rae <steve.rae@raedomain.com>
* | | Merge "Repo: improve error detection for new ssh connections"David Pursehouse2016-09-201-1/+5
|\ \ \
| * | | Repo: improve error detection for new ssh connectionsTimo Lotterbach2016-08-301-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this check can only detect errors that happen within 1 sec after launching ssh. But this is typically enough to catch configuration issues like 'connection refused' or 'authentication failed'. Change-Id: I00b6f62d4c2889b1faa6c820e49a198554c92795
* | | | Merge "Repo: fall back to http, if ssh connection fails for http repos"David Pursehouse2016-09-201-1/+4
|\ \ \ \
| * | | | Repo: fall back to http, if ssh connection fails for http reposTimo Lotterbach2016-08-301-1/+4
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if a gerrit server has ssh and https access enabled, but user access (for some users) is limited to https, 'repo upload' command will fail for them. Gerrit returns a ssh configuration (gerrit/ssh_info), that does not work for users limited to https. With this patch repo will test, if the returned ssh configuration from gerrit/ssh_info is working. if not, it will fall back to https for upload. Change-Id: If98f472e994f350bf71f35610cd649b163f1ab33
* | | | Merge "Replace pylint with pyflakes/flake8"David Pursehouse2016-09-203-302/+27
|\ \ \ \
| * | | | Replace pylint with pyflakes/flake8David Pursehouse2016-09-143-302/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pylint reports a lot of warnings, but many of them are false positive, and it's difficult to configure it. It also seems that for some reason the included config file is not working well with the latest version. Update the documentation to recommend using pyflakes and flake8 instead of pylint. Remove the pylint config and add a basic flake8 config with minimum settings: - Maximum line length 80 columns - Ignore warnings about indentation (repo uses 2 rather than expected 4) - Ignore warnings about import placement In this commit no code cleanup is done, and it's expected that most of the files will throw up quite a few warnings, at least for flake8. These can be cleaned up in follow-up commits. The existing pylint suppression comments are left as-is. These will be helpful when cleaning up pyflakes warnings later. Change-Id: I2f7cb4340266ed07cc973ca6483b8f09d66a765b
* | | | | Merge "When syncing a project with a shared object store, disable automatic ↵David Pursehouse2016-09-141-4/+7
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | pruning."
| * | | | | When syncing a project with a shared object store, disable automatic pruning.Gabe Black2016-09-141-4/+7
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The shared object stores confuse git and make it throw away objects which are still in use. We'll avoid that problem by disabling automatic pruning on those projects, but there's nothing preventing a user from changing the config back or pruning a repository manually. BUG=chromium:375945 TEST=Ran repo sync on fresh ChromeOS checkout, starting with a branch of repo with this change. Verified that the kernel projects and no others were identified as having shared object stores, and that repo successfully disabled automatic pruning in their configs. Re-enabled pruning and ran repo sync just on one of the kernel directories. Verified that pruning was re-disabled as a result. Change-Id: I728ed5b06f0087aeb5a23ba8f5410a7cd10af5b0
* | | | | Merge "repo: add comment for updating maintainer keys"David Pursehouse2016-09-141-0/+3
|\ \ \ \ \ | |_|/ / / |/| | | |
| * | | | repo: add comment for updating maintainer keysMike Frysinger2016-09-141-0/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: Ic1e7557f9597234033561ab9fb3104b87e30015e
* | | | | Merge "Fix submodule checkout error when using sync-s option"David Pursehouse2016-09-141-1/+1
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | Fix submodule checkout error when using sync-s optionAymen Bouaziz2016-06-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When sync-s="true" option is used, the checkout of a submodule will try to use the revision attribute of the parent project. If this revision is a named reference, the checkout will fail if there is no reference with this name in the submodule. The proposed solution is to use the git commit id as revisionExpr for submodules. Change-Id: Ie8390a11957fd6a9c61289c6861d13cb3fa11678
* | | | | Merge "upload: short circuit when nothing is pending"David Pursehouse2016-09-141-4/+6
|\ \ \ \ \
| * | | | | upload: short circuit when nothing is pendingMike Frysinger2016-09-141-4/+6
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | When nothing is pending, most of this code is already short-circuited. Hoist the single check up to make this more obvious/slightly faster. Change-Id: Iec3a7e08eacd23a7c5f964900d5776bf5252c804
* / | | | Consider local project to be default for 'repo start'Vadim Bendebury2016-09-141-2/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The requirement to explicitly specify the local project when starting a new repo branch is somewhat counter intuitive. This patch uses the current directory's git tree as the default project. Tested by running 'repo start <name>' observed that the result is the same as if running 'repo start <name> .' Change-Id: If106caa801b4cd5ba70dbe8354a227d59f100aa3
* | / / Update mailmapDavid Pursehouse2016-09-021-1/+4
| |/ / |/| | | | | | | | | | | | | | Order the entries alphabetically and add a couple more. Change-Id: I8d98e8a5a1dd6868b566a42428030d2040b8af7a
* | | gitc: Lower concurrent ls-projects requestsv1.12.34Dan Willemsen2016-08-231-1/+1
| | | | | | | | | | | | | | | | | | Too many requests at the same time is causing 502 errors. Change-Id: Ic8fbb2fbb7fb6014733fa5be018d2dc02472f704
* | | RepoHook: do not list options twice during hash based approvalJonathan Nieder2016-08-181-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of Do you want to allow this script to run (yes/yes-never-ask-again/NO)? (yes/always/NO)? ask Do you want to allow this script to run (yes/always/NO)? Change-Id: I5f5a2d0e88086a8d85e54fb8623a62d74a20956a Signed-off-by: Jonathan Nieder <jrn@google.com>
* | | Increment the wrapper versionDavid Pursehouse2016-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There have been a number of changes in the repo wrapper since the last increment that was done in fee390ee: - 9711a98 init: Add --no-clone-bundle option - 631d0ec Support non-ASCII GNUPGHOME environment variable - 4088eb4 repo: Cleaned up pylint/pep8 violations - 5553628 repo: Add check of REPO_URL env variable - 745b4ad Fix gitc-init behavior - d3ddcdb Ignore clone.bundle on HTTP 501, i.e. Not Implemented Change-Id: I3f763ef0ec2df2d726dff429021b48ad474148f1
* | | Merge "init: Add --no-clone-bundle option"David Pursehouse2016-08-172-4/+16
|\ \ \
| * | | init: Add --no-clone-bundle optionHu xiuyun2016-08-152-4/+16
| | | | | | | | | | | | | | | | | | | | Bug: Issue 218 Change-Id: I42ba1f5fb9168875da0df6bdf4fe44c8d6498d54
* | | | Merge "init: Respect --quiet option when synching manifest repository"David Pursehouse2016-08-171-1/+1
|\| | |
| * | | init: Respect --quiet option when synching manifest repositoryDavid Pursehouse2016-08-151-1/+1
| | | | | | | | | | | | | | | | Change-Id: Ib58b7dd971670e0888e6428333050700e776b0de
* | | | Merge "project: Set config option to skip lfs smudge filter"David Pursehouse2016-08-171-0/+1
|\ \ \ \
| * | | | project: Set config option to skip lfs smudge filterDavid Pursehouse2016-08-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During sync, repo runs `git read-tree --reset -u -v HEAD` which causes git-lfs's smudge filter to run. However this fails because git-lfs does not work with bare repositories. Add lfs.filter configuration to the project config as suggested in the comments on the upstream git-lfs client issue [1]. This prevents the smudge filter from running, and the sync completes successfully. For any projects that have LFS objects, `git lfs pull` must be executed. [1] https://github.com/github/git-lfs/issues/1422 Bug: Issue 224 Change-Id: I091ff37998131e2e6bbc59aa37ee352fe12d7fcd
* | | | | Merge "RepoHook: allow users to approve hooks via manifests"Jonathan Nieder2016-08-162-23/+84
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | RepoHook: allow users to approve hooks via manifestsMike Frysinger2016-08-162-23/+84
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The constant prompting when registered hooks change can be tedious and has a large multiplication factor when the project is large (e.g. the AOSP). It gets worse as people want to write more checks, hooks, docs, and tests (or fix bugs), but every CL that goes in will trigger a new prompt to approve. Let's tweak our trust model when it comes to hooks. Since people start off by calling `repo init` with a URL to a manifest, and that manifest defines all the hooks, anchor trust in that. This requires that we get the manifest over a trusted link (e.g. https or ssh) so that it can't be MITM-ed. If the user chooses to use an untrusted link (e.g. git or http), then we'll fallback to the existing hash based approval. Bug: Issue 226 Change-Id: I77be9e4397383f264fcdaefb582e345ea4069a13