summaryrefslogtreecommitdiffstats
path: root/git_config.py
Commit message (Collapse)AuthorAgeFilesLines
* git_config: fix encoding handling in GetUrlCookieFileMike Frysinger2020-02-101-2/+2
| | | | | | | | | | | Make sure we decode the bytes coming from the subprocess.Popen as we're treating them as strings. Change-Id: I44100ca5cd94f68a35d489936292eb641006edbe Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/253973 Reviewed-by: Jonathan Nieder <jrn@google.com> Tested-by: Mike Frysinger <vapier@google.com> (cherry picked from commit ded477dbb9c6993cbe8b93b10654682b04fdeea8)
* use open context managers in more placesMike Frysinger2019-11-121-12/+3
| | | | | | | | | | Use open() as a context manager to simplify the close logic and make the code easier to read & understand. This is also more Pythonic. Change-Id: I579d03cca86f99b2c6c6a1f557f6e5704e2515a7 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/244734 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* rename local trace moduleMike Frysinger2019-08-271-1/+1
| | | | | | | | | | There is a standard Python "trace" module, so having a local trace.py prevents us being able to import that. Rename the module to avoid. Change-Id: I23e29ec95a2204bb168a641323d05e76968d9b57 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/234832 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* git_config: include project name in missing ref exceptionMike Frysinger2019-08-031-1/+2
| | | | | | | | | | | | When syncing in parallel, this exception is hard to trace back to a specific repo as the relevant log line could have been pushed out by other repos syncing code. Change-Id: I382efeec7651e85622aa51e351134aef0148267f Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/233075 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Reviewed-by: Nasser Grainawi <nasser@codeaurora.org> Tested-by: Mike Frysinger <vapier@google.com>
* handle binary stream from urllib.request.urlopenMike Frysinger2019-07-041-1/+2
| | | | | | | | Python 3 returns bytes by default with urlopen. Adjust our code to handle that scenario and decode as necessary. Bug: https://crbug.com/gerrit/10418 Change-Id: Icf4cd80e7ef92d71a3eefbc6113f1ba11c32eebc
* set default file encoding to utf-8Mike Frysinger2019-06-131-0/+1
| | | | | | | | There's no reason to support any other encoding in these files. This only affects the files themselves and not streams they open. Bug: https://crbug.com/gerrit/10418 Change-Id: I053cb40cd3666ce5c8a0689b9dd938f24ca765bf
* Add support for long pathsRenaud Paquay2018-10-221-1/+1
| | | | | | | | | | | | | | | | | | | | * Add more file i/o wrappers in platform_utils to allow using long paths (length > MAX_PATH) on Windows. * Paths using the long path syntax ("\\?\" prefix) should never escape the platform_utils API surface area, so that this specific syntax is not visible to the rest of the repo code base. * Forward many calls from os.xxx to platform_utils.xxx in various place to ensure long paths support, specifically when repo decides to delete obsolete directories. * There are more places that need to be converted to support long paths, this commit is an initial effort to unblock a few common use cases. * Also, fix remove function to handle directory symlinks Change-Id: If82ccc408e516e96ff7260be25f8fd2fe3f9571a
* fix some sync error while using python3Dylan Deng2018-07-241-1/+3
| | | | Change-Id: I70925e48756c356d48359679d8ad1b9e33a68595
* Remove unused pylint suppressionsDavid Pursehouse2018-07-241-2/+1
| | | | | | | | | | | pylint is not used since bb5b1a0. The pyflakes cleanup mentioned in that commit has not been done, but given that this project is no longer being actively developed I don't think it's worth spending time doing it. Leaving the pylint suppressions causes confusion because it leads people to think that we are still using pylint. Change-Id: If7d9f280a0f408c780f15915ffdb80579ae21f69
* Take care of a tilde on cookie file pathDaichi Ueura2018-02-261-2/+5
| | | | | | This handles cookie file path like "~/.gitcookies". Change-Id: I87ba120a940fff38073d520f83b70654e6a239ba
* Replace all os.remove callsRenaud Paquay2017-08-311-3/+4
| | | | | | | | os.remove raises an exception when deleting read-only files on Windows. Replace all calls with calls to platform_utils.remove, which deals with deals with that issue. Change-Id: I4dc9e0c9a36b4238880520c69f5075eca40f3e66
* Merge "Fixed upload to remotes with the url ssh://hostname"David Pursehouse2017-08-301-2/+2
|\
| * Fixed upload to remotes with the url ssh://hostnameChristian Koestlin2017-08-291-2/+2
| | | | | | | | Change-Id: I1d0dd4d3f90eac45205f6f4ca98a29b0babdbc3f
* | Merge "Add option '--no-cert-checks' for 'upload' sub command."David Pursehouse2017-08-301-2/+7
|\ \ | |/ |/|
| * Add option '--no-cert-checks' for 'upload' sub command.Łukasz Gardoń2017-08-231-2/+7
| | | | | | | | | | | | | | This option allow to bypass verification ssl certification while establishing connection with Gerrit to upload review. Change-Id: If2e15f5a273c18a700eb5093ca8a4d5a4cbf80cd
* | When starting a branch, do not use a tag or change value for branch.mergeZac Livingston2017-08-251-2/+10
|/ | | | | | | | | | | | | When starting a branch, branch.merge is set to project revision unless the revision is a SHA1. In that case, branch.merge is set to dest_branch if defined or manifest default revision otherwise. This special handling allows repo upload to work when the project revision is a SHA1. Extend the special handling to also happen when the project revision is a tag value or a change value so that repo upload will work in those case as well. Change-Id: Iff81ece40e770cd02535e80dcb023564d42dcf47
* Add option REPO_IGNORE_SSH_INFO to ignore ssh_infoTimo Lotterbach2017-05-261-0/+3
| | | | | | | | | | | | | | | | | | | This is required for setups, where Gerrit access using ssh is only available for some networks. For network without ssh access, repo will get ssh_info from Gerrit and use ssh for communications - which will fail. To support this setup we need to have an option to ignore the ssh_info provided by Gerrit and use http(s). Using git insteadOf as alternative results in the inability to add reviewers using "repo upload --re=...", since the syntax of adding reviewers differs for ssh and https. repo is assuming an ssh connection and uses "git push --receive-pack=...", which will fail since git silently uses https for push operation. repo must be aware that https is used so it uses "git push remote ...:refs/for/...%r=..." for upload. Change-Id: Idd83baef0fb26ffcc9ac65e204b68d323ce177a1
* 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
* implement optional 'pushurl' in the manifest fileSteve Rae2016-09-201-0/+5
| | | | | | | | 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
* | 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
* Support smart-sync through persistent-http[s]Dan Willemsen2015-08-191-0/+39
| | | | | | | Use the same cookies and proxy that git traffic goes through for persistent-http[s] to support authentication for smart-sync. Change-Id: I20f4a281c259053a5a4fdbc48b1bca48e781c692
* git_config: fix _SaveJson typoAnthony King2015-06-041-1/+1
| | | | Change-Id: I35ca2b3733e6d1508669f9a6690c6645c582912e
* git_config: add support for remote '.'v1.12.19Yann Droneaud2015-03-061-1/+1
| | | | | | | | | | | | | | | | | | | As a fix for issue #149, this patch add support for the remote '.' (local). As an alias for the local repository, remote '.' is lacking a fetch = config in .git/config. Without such refspec, repo info --overview is not able to process a local tracking branch. v2: Check for name == '.' before checking if merge starts with refs/, since the case where it's not is invalid. Signed-off-by: Yann Droneaud <ydroneaud@opteya.com> Signed-off-by: Filipe Brandenburger <filbranden@google.com> Change-Id: I8c8fd8602cd68baecb530301ae41d37d751ec85d
* Support persistent-http(s) review urlsConley Owens2014-10-231-0/+2
| | | | Change-Id: I8e0065685c968dfa9dc26bcdb6ee2fa14019c509
* Support specifying non-HEADS refs as upstreamNasser Grainawi2014-10-091-2/+4
| | | | | | | | | While not typical, some users might have an upstream that isn't in the usual refs/heads/* namespace. There's no reason not to use those refs as the value for the upstream attribute, so support doing so. Change-Id: I5b119f1135c3268c20e7c4084682e860d3ee1fb1
* Don't open non-binary files as binaryChirayu Desai2014-08-191-1/+1
| | | | | | * Don't pen the git config file, and the git ".lock" file as binary. Change-Id: I7b3939658456f2fd0a0500443cdd8d1ee1a4459d
* Merge "Fix UrlInsteadOf to handle multiple strings"Conley Owens2014-06-301-3/+3
|\
| * Fix UrlInsteadOf to handle multiple stringsDan Willemsen2014-03-061-3/+3
| | | | | | | | | | | | | | For complex .gitconfig url rewrites, multiple insteadOf lines may be used for a url. Search all of them for the right rewrite. Change-Id: If5e9ecd054e86226924b0baf513801cd57c389cd
* | Use JSON instead of pickleAnthony King2014-05-071-32/+22
|/ | | | | | | Use JSON as it is shown to be much faster than pickle. Also clean up the loading and saving functions. Change-Id: I45b3dee7b4d59a1c0e0d38d4a83b543ac5839390
* Stop appending 'p/' to review urlsConley Owens2014-02-041-1/+1
| | | | | | | Gerrit no longer requires 'p/', and this causes unexpected behavior. In this change we stop appending 'p/' to the urls. Change-Id: I72c13bf838f4112086141959fb1af249f9213ce6
* Changes to support sso: repositories for uploadSteve Pucci2014-01-311-1/+4
| | | | Change-Id: Iddf90d52f700a1f6462abe76d4f4a367ebb6d603
* Fix some python3 encoding issuesChirayu Desai2013-11-211-2/+2
| | | | | | * Add .decode('utf-8') where needed * Add 'b' to `open` where needed, and remove where unnecessary Change-Id: I0f03ecf9ed1a78e3b2f15f9469deb9aaab698657
* Assume http upload if ssh_info cannot be parsedConley Owens2013-09-271-7/+4
| | | | | | | | | | | | When uploading a change for review, we sometimes request /ssh_info to get the correct port number for uploading via ssh (regardless of whether or not we intend to upload over ssh). If we have trouble accessing /ssh_info (for authentication reasons, etc), we now press on under the assumption that we will upload via http instead of aborting. Change-Id: Ica6bbeac1279e89424a903529649b7f4af0b6937
* Handle HTTPException when attempting to get ssh_infoDavid Pursehouse2013-05-251-0/+6
| | | | | | | | | | | The call to `urlopen` can raise `HTTPException`, but this is not caught which results in a python Traceback. Add handling of the exception. Because `HTTPException` and its derived classes do not have any message, print the name of the exception in the error message instead. Change-Id: Ic90fb4cc0e92702375cd976d4a03876c8ce8bffc
* Move Python version checking to a separate moduleDavid Pursehouse2013-05-231-5/+4
| | | | | | | | | | | | | | | | | 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-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* Tidy up code formatting a bit moreDavid Pursehouse2012-11-141-1/+1
| | | | | | | | | | | | Enable the following Pylint warnings: C0322: Operator not preceded by a space C0323: Operator not followed by a space C0324: Comma not followed by a space And make the necessary fixes. Change-Id: I74d74283ad5138cbaf28d492b18614eb355ff9fe
* Fix inconsistent indentationDavid Pursehouse2012-11-141-3/+3
| | | | | | | | | | The repo coding style is to indent at 2 characters, but there are many places where this is not followed. Enable pylint warning "W0311: Bad indentation" and make sure all indentation is at multiples of 2 characters. Change-Id: I68f0f64470789ce2429ab11104d15d380a63e6a8
* Change print statements to work in python3Sarah Owens2012-11-131-3/+3
| | | | | | This is part of a series of changes to introduce Python3 support. Change-Id: I373be5de7141aa127d7debdbce1df39148dbec32
* Merge "Change usages of xrange() to range()"Conley Owens2012-11-121-1/+1
|\
| * Change usages of xrange() to range()Sarah Owens2012-11-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | In Python3, range() creates a generator rather than a list. None of the parameters in the ranges changed looked large enough to create an impact in memory in Python2. Note: the only use of range() was for iteration and did not need to be changed. This is part of a series of changes to introduce Python3 support. Change-Id: I50b665f9296ea160a5076c71f36a65f76e47029f
* | Fix pylint warning W0108: Lambda may not be necessaryDavid Pursehouse2012-11-071-2/+2
|/ | | | | | Remove unnecessary usage of lambda. Change-Id: I06d41933057d60d15d307ee800cca052a44754c6
* Use python3 urllib when urllib2 not availableSarah Owens2012-10-311-4/+15
| | | | | | This is part of a series of changes to introduce Python3 support. Change-Id: I605b145791053c1f2d7bf3c907c5a68649b21d12
* Even more coding style cleanupDavid Pursehouse2012-10-301-2/+3
| | | | | | | | | | | Fixing some more pylint warnings: W1401: Anomalous backslash in string W0623: Redefining name 'name' from outer scope W0702: No exception type(s) specified E0102: name: function already defined line n Change-Id: I5afcdb4771ce210390a79981937806e30900a93c
* Use modern Python exception syntaxSarah Owens2012-10-231-3/+3
| | | | | | | | | | | "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
* Coding style cleanupDavid Pursehouse2012-10-091-16/+16
| | | | | | | | | | | | | | | 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
* Permit - in URL schemes for special URLsShawn O. Pearce2012-03-141-1/+1
| | | | | | | | | 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
* upload: Support uploading to Gerrit over https://v1.7.8.2Shawn O. Pearce2012-01-111-48/+27
| | | | | | | | If SSH is not available, Gerrit returns NOT_AVAILABLE to the /ssh_info query made by repo upload. In this case fallback to the /p/$PROJECT URL that Gerrit also exports and use that for uploads. Change-Id: I1e3e39ab709ecc0a692614a41a42446426f39c08