summaryrefslogtreecommitdiffstats
path: root/manifest_xml.py
Commit message (Collapse)AuthorAgeFilesLines
* implement optional 'pushurl' in the manifest fileSteve Rae2016-09-201-1/+9
| | | | | | | | 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>
* pylint: fix indentation in manifest_xmlStefan Beller2016-06-171-1/+1
| | | | | | | | | | This fixes pylint warning: ************* Module manifest_xml W:975, 0: Bad indentation. Found 8 spaces, expected 6 (bad-indentation) Change-Id: I967212f9439430351836ebdc27e442d7b77476e2 Signed-off-by: Stefan Beller <sbeller@google.com>
* Fix XmlManifest.Save with remotes that have 'alias' setDan Willemsen2016-04-221-5/+8
| | | | | | | | | | | | When the alias attribute is set for a remote, the RemoteSpec attached to a Project only contains the alias name used by git, not the original name used in the manifest. But that's not enough information to reconstruct the manifest, so save off the original manifest name as another RemoteSpec parameter, only used to write the manifest out. Bug: Issue 181 Bug: Issue 219 Change-Id: Id7417dfd6ce5572e4e5fe14f22924fdf088ca4f3
* GITC: Always update the gitc manifest from the repo manifestv1.12.31Dan Willemsen2015-09-091-2/+3
| | | | | | | | | | | | | | This way any changes made to the main manifest are reflected in the gitc manifest. It's also necessary to use both manifests to sync since the information required to update the gitc manifest is actually in the repo manifest. This also fixes a few issues that came up when testing. notdefault groups weren't being saved to the gitc manifest in a method that matched 'sync'. The merge branch wasn't always being set to the correct value either. Change-Id: I435235cb5622a048ffad0059affd32ecf71f1f5b
* Revert "GITC: Always update the gitc manifest from the repo manifest"Dan Willemsen2015-09-091-3/+2
| | | | | | This reverts commit 250303b437855c2b50d052a05a08ed517423af8b. Change-Id: I1fd8af20f802553151aacb953c913f3305ca6057
* GITC: Always update the gitc manifest from the repo manifestDan Willemsen2015-09-091-2/+3
| | | | | | | | | | | | | | This way any changes made to the main manifest are reflected in the gitc manifest. It's also necessary to use both manifests to sync since the information required to update the gitc manifest is actually in the repo manifest. This also fixes a few issues that came up when testing. notdefault groups weren't being saved to the gitc manifest in a method that matched 'sync'. The merge branch wasn't always being set to the correct value either. Change-Id: I5dbc850dd73a9fbd10ab2470ae4c40e46ff894de
* GITC: Pull GITC Manifest Dir from the config.Simran Basi2015-08-311-1/+1
| | | | | | | Updates the repo launcher and gitc_utils to pull the manifest directory location out of the gitc config file. Change-Id: Id08381b8a7d61962093d5cddcb3ff6afbb13004b
* GITC: Add repo start support.Simran Basi2015-08-281-2/+34
| | | | | | | | | | | | | | | | | | | | | 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
* Copy clone-depth in `repo manifest`Dan Willemsen2015-08-171-0/+3
| | | | | | | This argument wasn't being copied, which caused syncs from generated manifests to pull down too much of the git history. Change-Id: I269bab788d4557267c081628b3f8c6aec7744e81
* Include dest-branch attribute in the 'manifest' subcommand's outputSimon Ruggier2015-07-311-0/+6
| | | | Change-Id: If4227d02005fddea82d9e698a373222100d8f710
* Always output upstream if specifiedConley Owens2015-07-101-5/+7
| | | | | | | | | Previously, in running the `manifest` command, we wouldn't output the upstream if the default upstream would include the pinned sha1. However, now that fetching refs/heads/* doesn't guarantee that we will have the sha1, we need to always output the specified upstream branch. Change-Id: Ib8b409a8ecd439397b38ee9649c530407797f841
* Fix substitution err for schemeless manifest urlsv1.12.22Conley Owens2015-04-291-1/+2
| | | | | | | | Previously, we used a regex that would only remove a phony string from a url if it existed, but we recently replaced that with a slice. This change goes back to the previous behavior. Change-Id: I8baf527be01c4b49d45b903b31a1cd6315563d5b
* Resolve fetch urls more efficientlyAnthony King2015-03-311-16/+9
| | | | | | | | | | | Instead of using regex, append the netloc and relative scheme lists with the custom scheme. The schemes will only be appended when needed, instead of passing X amount of regex replaces. see http://bugs.python.org/issue18828 for more details. Change-Id: I10d26d5ddc32e7ed04c5a412bdd6e13ec59eb70f
* Revert "Implementation of manifest defined githooks"v1.12.20Jonathan Nieder2015-03-171-22/+2
| | | | | | | | | | | | | | | This reverts commit 38e4387f8eb8cffd6359d726c38a7c524fef07e3. A "repo init" followed by "repo sync" is meant to be as safe as "git clone". In particular it should not run arbitrary code provided by the manifest owner. It would still be nice to have support for manifest-defined git hooks --- they'd just need a prompt like the upload RepoHook has. Hopefully a later change can bring them back. Change-Id: I5ecd90fb5c2ed64f103d856d1ffcba38a47b062d Signed-off-by: Jonathan Nieder <jrn@google.com>
* Implementation of manifest defined githooksJimmie Wester2015-02-031-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When working within a team or corporation it is often useful/required to use predefined git templates. This change teaches repo to use a per-remote git hook template structure. The implementation is done as a continuation of the existing projecthook functionality. The terminology is therefore defined as projecthooks. The downloaded projecthooks are stored in the .repo directory as a metaproject separating them from the users project forest. The projecthooks are downloaded and set up when doing a repo init and updated for each new repo init. When downloading a mirror the projecthooks gits are not added to the bare forest since the intention is to ensure that the latest are used (allows for company policy enforcement). The projecthooks are defined in the manifest file in the remote element as a subnode, the name refers to the project name on the server referred to in the remote. <remote name="myremote ..> <projecthook name="myprojecthookgit" revision="myrevision"/> </remote> The hooks found in the projecthook revision supersede the stock hooks found in repo. This removes the need for updating the projecthook gits for repo stock hook changes. Change-Id: I6796b7b0342c1f83c35f4b3e46782581b069a561 Signed-off-by: Patrik Ryd <patrik.ryd@stericsson.com> Signed-off-by: Ian Kumlien <ian.kumlien@gmail.com>
* Merge "Add extend-project tag to support adding groups to an existing project"Conley Owens2014-09-181-2/+22
|\
| * Add extend-project tag to support adding groups to an existing projectJosh Triplett2014-06-201-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | Currently, if a local manifest wants to add groups to an existing project, it must use remove-project and then re-add the project with the new groups. This makes the local manifest more fragile, requiring updates to the local manifest if the original manifest changes. Add a new extend-project tag, which supports adding groups to an existing project. Change-Id: Ib4d1352efd722a65dd263d02644b9ea5ab6ed400
* | Add support for rpc:// protocol schemes.T.R. Fullhart2014-09-101-0/+4
| | | | | | | | Change-Id: I0e500e45cacc20ac04b43435c4bd189299e9e97b
* | Enable transferring of attribute using command 'repo manifest -o -'Mani Chandel2014-07-241-0/+2
|/ | | | | | | | | | | 'upstream' attribute is now transferred to the new manifest xml that is created when using command 'repo manifest -o -'. Manifest help is updated for the attributes 'sync-c','sync-s' and 'sync-j'. Bug: Issue 164 Change-Id: If63f781e91d25c5b5b5ea0696b0c04337b0a686a
* Merge "Enable remotes to define their own revision"Conley Owens2014-05-081-6/+16
|\
| * Enable remotes to define their own revisionAnthony King2014-05-071-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | Some projects use multiple remotes. In some cases these remotes have different naming conventions. Add an option to define a revision in the remote configuration. The `project` revision takes precedence over `remote` and `default`. The `remote` revision takes precedence over `default`. The `default` revision acts as a fall back as it originally did. Change-Id: I2b376160d45d48b0bab840c02a3eef1a1e32cf6d
* | Merge "Return a list rather than dict_values in XmlManifest.projects()"Conley Owens2014-05-071-1/+1
|\ \
| * | Return a list rather than dict_values in XmlManifest.projects()Anthony King2014-05-061-1/+1
| |/ | | | | | | | | | | | | dict.values() produce dict_values objects rather than list objects. Convert this to a list to maintain functionality with certain functions. Change-Id: Ie76269e19f8d68479a1d7ae03aa965252d759a9e
* / Use sorted() rather than .sort()Anthony King2014-05-061-4/+2
|/ | | | | | | dict.keys() produces a dict_keys object in Python 3, which does not support .sort(). Use sorted() which will give the same outcome. Change-Id: If6b33db07a31995b4e44959209d08d8fb74ae339
* Add linkfile support.Jeff Hamilton2014-04-221-0/+16
| | | | | | | | | It's just like copyfile and runs at the same time as copyfile but instead of copying it creates a symlink instead. This is needed because copyfile copies the target of the link as opposed to the symlink itself. Change-Id: I7bff2aa23f0d80d9d51061045bd9c86a9b741ac5
* Fix to mirror manifest when --mirror is givenKwanhong Lee2014-02-201-1/+2
| | | | | | | | | | | | | | | | | | | Commit 8d201 "repo: Support multiple branches for the same project." (Change id is I5e2f4e1a7abb56f9d3f310fa6fd0c17019330ecd) caused missing mirroring manifest repository when 'repo sync' after 'repo init --mirror'. When the function _AddMetaProjectMirror() is called to add two of meta projects - git-repo itself and manifest repository to mirror, it didn't add them into self._paths which has list of projects to be sync'ed by 'repo sync'. In addition, because member var of Project 'relpath' is used as a key of self._paths, it should be set with proper value other than None. Since this is only for meta projects which are not described in manifest xml, 'relpath' is name of the projects. Change-Id: Icc3b9e6739a78114ec70bf54fe645f79df972686 Signed-off-by: Kwanhong Lee <kwanhong.lee@windriver.com>
* Add the "diffmanifests" commandJulien Campergue2014-02-171-1/+38
| | | | | | | | | This command allows a deeper diff between two manifest projects. In addition to changed projects, it displays the logs of the commits between both revisions for each project. Change-Id: I86d30602cfbc654f8c84db2be5d8a30cb90f1398 Signed-off-by: Julien Campergue <julien.campergue@parrot.com>
* Fix persistent-https relative url resolvingConley Owens2014-01-311-8/+10
| | | | | | | | | | | | | | Previously, we would remove 'persistent-' then tack it on at the end if it had been previously found. However, this would ignore urljoin's decision on whether or not the second path was relative. Instead, we were always assuming it was relative and that we didn't want to use a different absolute url with a different protocol. This change handles persistent-https:// in the same way we handled the absense of an explicit protocol. The only difference is that this time instead of temporarily replacing it with 'gopher://', we use 'wais://'. Change-Id: I6e8ad1eb4b911931a991481717f1ade01315db2a
* repo: Fix 'remove-project' regression with multiple projects.v1.12.10David James2014-01-301-3/+6
| | | | | | | In CL:50715, I updated repo to handle multiple projects, but the remove-projects code path was not updated accordingly. Update it. Change-Id: Icd681d45ce857467b584bca0d2fdcbf24ec6e8db
* Merge "repo: Support multiple branches for the same project."Conley Owens2014-01-101-19/+45
|\
| * repo: Support multiple branches for the same project.David James2013-10-141-19/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is often useful to be able to include the same project more than once, but with different branches and placed in different paths in the workspace. Add this feature. This CL adds the concept of an object directory. The object directory stores objects that can be shared amongst several working trees. For newly synced repositories, we set up the git repo now to share its objects with an object repo. Each worktree for a given repo shares objects, but has an independent set of references and branches. This ensures that repo only has to update the objects once; however the references for each worktree are updated separately. Storing the references separately is needed to ensure that commits to a branch on one worktree will not change the HEAD commits of the others. One nice side effect of sharing objects between different worktrees is that you can easily cherry-pick changes between the two worktrees without needing to fetch them. Bug: Issue 141 Change-Id: I5e2f4e1a7abb56f9d3f310fa6fd0c17019330ecd
* | Add --archive option to init to sync using git archiveJulien Campergue2013-12-101-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This significantly reduces sync time and used brandwidth as only a tar of each project's revision is checked out, but git is not accessible from projects anymore. This is relevant when git is not needed in projects but sync speed/brandwidth may be important like on CI servers when building several versions from scratch regularly for example. Archive is not supported over http/https. Change-Id: I48c3c7de2cd5a1faec33e295fcdafbc7807d0e4d Signed-off-by: Julien Campergue <julien.campergue@parrot.com>
* | Fix a small whitespace consistency issueConley Owens2013-10-161-1/+1
| | | | | | | | Change-Id: Ie98c79833ca5e7ef71666489135f7491223f779c
* | Dan't accessing attr of None (`manifest` subcmd)Conley Owens2013-10-161-1/+3
| | | | | | | | | | | | | | If d.remote is None, this code failed for obvious reasons. This is a simple fix. Change-Id: I413756121e444111f1e3c7dc8bc8032467946c13
* | Fix indentationv1.12.5David Pursehouse2013-10-151-4/+3
| | | | | | | | | | | | | | git-repo uses 2 space indentation. A couple of recent changes introduced 4 space indentation in some modules. Change-Id: Ia4250157c1824c1b5e7d555068c4608f995be9da
* | Merge "Better handling of duplicate default"David Pursehouse2013-10-151-5/+14
|\ \ | |/ |/|
| * Better handling of duplicate defaultJulien Campergue2013-10-101-5/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently, an error is raised if more than one default is defined. When including another manifest, it is likely that a default has been defined in both manifests. Don't raise an error if all the defaults defined have the same attributes. Change-Id: I2603020687e2ba04c2c62c3268ee375279b34a08 Signed-off-by: Julien Campergue <julien.campergue@parrot.com>
* | Respect remote aliasesConley Owens2013-10-081-1/+6
|/ | | | | | | | | | | Previously, change I7150e449341ed8655d398956a095261978d95870 had broken alias support in order to fix the manifest command to keep it from spitting projects that point to an alias that wasn't recorded. This commit reverts that commit and instead solves the issue more correctly, outputting the alias in the remote node of the manifest and respecting that alias when outputting the list of projects. Change-Id: I941fc4adb7121d2e61cedc5838e80d3918c977c3
* Give the node _Default class a destBranchExprConley Owens2013-09-251-0/+1
| | | | | | | | | This is to avoid the following AttributeError: line 681, in _ParseProject AttributeError: '_Default' object has no attribute 'destBranchExpr' Change-Id: Ia9f7e2cce1409d22d71bc8a74b33edf2b27702ca
* Fix urllib.parse (urlparse) handlingChirayu Desai2013-06-111-1/+1
| | | | | | | | | | | | | | | Revert "Fix "'module' object is not callable" error", and fix it properly. * The urlparse module is renamed to urllib.parse in Python 3. * This commit fixes the code to use "urllib.parse.urlparse" instead of creating a new module urlib and setting urlib.parse to urlparse.urlparse. * Fixes an AttributeError: 'function' object has no attribute 'uses_relative' This reverts commit cd51f17c643370e6199216462c1be36f04d57291. Change-Id: I48490b20ecd19cf5a6edd835506ea5a467d556ac
* Fix "'module' object is not callable" errorDavid Pursehouse2013-06-081-1/+1
| | | | | | | | In a couple of files the urlparse method was not being set up correctly for python < 3 and this resulted in an error being thrown when trying to call it. Change-Id: I4d2040ac77101e4e228ee225862f365ae3d96cec
* Send reviews to a different branch from fetchBryan Jacobs2013-05-241-1/+6
| | | | | | | | This adds the ability to have reviews pushed to a different branch from the one on which changes are based. This is useful for "gateway" systems without smartsync. Change-Id: I3a8a0fabcaf6055e62d3fb55f89c944e2f81569f
* Move Python version checking to a separate moduleDavid Pursehouse2013-05-231-5/+5
| | | | | | | | | | | | | | | | | Add a new module with methods for checking the Python version. Instead of handling Python3 imports with try...except blocks, first check the python version and then import the relevant modules. This makes the code a bit cleaner and will result in less diff when/if we remove support for Python < 3 later. Use the same mechanism to handle `input` vs. `raw_input` and add suppression of pylint warnings caused by redefinition of the built-in method `input`. Change-Id: Ia403e525b88d77640a741ac50382146e7d635924 Also-by: Chirayu Desai <cdesai@cyanogenmod.org> Signed-off-by: Chirayu Desai <cdesai@cyanogenmod.org>
* Some fixes for supporting python3Chirayu Desai2013-04-181-32/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix imports. * Use python3 syntax. * Wrap map() calls with list(). * Use list() only wherever needed. (Thanks Conley!) * Fix dictionary iteration methods (s/iteritems/items/). * Make use of sorted() in appropriate places * Use iterators directly in the loop. * Don't use .keys() wherever it isn't needed. * Use sys.maxsize instead of sys.maxint TODO: * Make repo work fully with python3. :) Some of this was done by the '2to3' tool [1], by applying the needed fixes in a way that doesn't break compatibility with python2. Links: [1]: http://docs.python.org/2/library/2to3.html Change-Id: Ibdf3bf9a530d716db905733cb9bfef83a48820f7 Signed-off-by: Chirayu Desai <cdesai@cyanogenmod.org>
* Allow mirror to be created in directories specified by 'path' attributeScott Fan2013-04-111-0/+4
| | | | | | | | | | | | | In some cases, especially when local manifest files exist, users may want to force the mirrored repositories to be created in folders according to their 'path' attribute in the manifest, rather than according to the name of the repositories. To enable this functionality for specified mirror, add a new attribute 'force-path' for that project in the manifest, set its value to 'true'. Change-Id: I61df8c987a23d84309b113e7d886ec90c838a6cc Signed-off-by: Scott Fan <fancp2007@gmail.com>
* Allow clone depth to be specified per projectDavid Pursehouse2013-04-101-0/+11
| | | | | | | | | | | If the clone-depth attribute is set on a project, its value will be used to set the depth when fetching the git. The value, if given, must be a positive integer. The value in the clone-depth attribute overrides any value given to repo init via the --depth command line option. Change-Id: I273015b3724213600b63e40cca4cafaa9f782ddf
* Fix `repo manifest` support of remote aliases.Brian Harring2013-04-031-2/+0
| | | | | | | | | Long story short, w/out this modification the manifest dump points at the alias, rather than the actual remote for the project. This breaks sync'ing for scenarios where the alias doesn't have the same repos available as the remote, plus just plain is wrong. Change-Id: I7150e449341ed8655d398956a095261978d95870
* Fix: local manifest deprecation warning appears more than onceDavid Pursehouse2013-02-171-3/+6
| | | | | | | | | When running repo sync, the local_manifest.xml deprecation warning is shown twice. Add a flag to ensure that it is only displayed once. Change-Id: Icfa2b0b6249c037c29771f9860252e6eda3ae651
* Exit with fatal error if local manifest file cannot be parsedDavid Pursehouse2013-02-171-5/+2
| | | | | | | | | | | | | If the .repo/local_manifests folder includes a local manifest file that cannot be parsed, the current behaviour is to catch the parse exception, print a warning, and continue to process remaining files. This can cause any errors to go unnoticed. Remove the exception handling, so that the exception is instead caught in main._Main, and repo exits with a fatal error. Change-Id: I75a70b7b850d2eb3e4ac99d435a4568ff598b7f4
* Show full path of `local_manifests` folder in deprecation warningDavid Pursehouse2013-02-171-2/+2
| | | | | | | | | | | | When a local_manifest.xml file is present, a deprecation warning is printed telling the user to put local manifest files in the `local_manifests` directory. Include the full path to the `local_manifests` directory in the warning, to reduce confusion about where the directory should be located. Also enclose the directory name in backticks. Change-Id: I85710cfbd6e77fb2fa6b7b0ce66d77693ccd649f