summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Ignore EOFError when reading a truncated pickle filev1.6.8.2Shawn O. Pearce2009-06-121-0/+3
| | | | | | | | | If the pickle config file is 0 bytes in length, we may have crashed (or been aborted) while writing the file out to disk. Instead of crashing with a backtrace, just treat the file as though it wasn't present and load off a `git config` fork. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Add missing return False to preconnectShawn O. Pearce2009-06-121-0/+1
| | | | | | | | Noticed by users on repo-discuss, we were missing a return False here to signal that SSH control master was not used to setup the network connection. Signed-off-by: Shawn O. Pearce <sop@google.com>
* sync: Keep the project.list file sortedShawn O. Pearce2009-06-041-0/+1
| | | | | | Its easier to locate an entry visually if the file is sorted. Signed-off-by: Shawn O. Pearce <sop@google.com>
* sync: Tolerate blank lines in project.listv1.6.8.1Shawn O. Pearce2009-06-041-1/+5
| | | | | | | | If a line is blank in project.list, its not a relevant project path, so skip over it. Existing project.list files may have blank lines if sync was run with no projects at all, and the file was created empty. Signed-off-by: Shawn O. Pearce <sop@google.com>
* sync: Don't process project.list in a mirrorShawn O. Pearce2009-06-041-0/+4
| | | | | | | | | We have no working tree, so we cannot update the project.list state file, nor should we try to delete a directory if a project is removed from the manifest. Clients would still need the repository for historical records. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Silence 'Current branch %s is up to date' during syncShawn O. Pearce2009-06-031-3/+1
| | | | | | | | We accidentally introduced this message during 1.6.8 by always invoking `git rebase` when there were no new commits from the upstream, but the user had local commits. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Delete empty parent subdirs after deleting obsolete paths.v1.6.8Jaikumar Ganesh2009-06-021-0/+8
| | | | | | After sync, we delete obsolete project paths. Iterate and delete parent subdirs which are empty. Tested on projects within subdirectories.
* Update project paths after sync.Jaikumar Ganesh2009-06-021-0/+48
| | | | | | After a repo sync, some of the project paths might need to be removed. This changes maintains a list of project paths from the previous sync operation and compares.
* Fix unnecessary self in project.pyShawn O. Pearce2009-06-011-1/+1
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Add PyDev project files to repoKis Gergely2009-06-022-0/+27
|
* Change project.revision to revisionExpr and revisionIdShawn O. Pearce2009-05-295-118/+113
| | | | | | | | | The revisionExpr field now holds an expression from the manifest, such as "refs/heads/master", while revisionId holds the current commit-ish SHA-1 of the revisionExpr. Currently that is only filled in if the manifest points directly to a SHA-1. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Change DWIMery hack for dealing with rewound remote branchShawn O. Pearce2009-05-291-35/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | The trick of looking at the reflog for the remote tracking branch and only going back one commit works some of the time, but not all of the time. Its sort of relying on the fact that the user didn't use `repo sync -n` or `git fetch` to only update the tracking branches and skip the working directory update. Doing this right requires looking through the history of the SHA-1 source (what the upstream used to be) and finding a spot where the DAG diveraged away suddenly, and consider that to be the rewind point. That's really difficult to do, as we don't have a clear picture of what that old point was. A close approximation is to list all of the commits that are in HEAD, but not the new upstream, and rebase all of those where the committer email address is this user's email address. In most cases, this will effectively rebase only the user's new original work. If the user is the project maintainer and rewound the branch themselves, and they don't want all of the commits they have created to be rebased onto the new upstream, they should handle the rebase on their own, after the sync is complete. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Refactor how projects parse remotes so it can be replacedShawn O. Pearce2009-05-294-41/+33
| | | | | | | | | We now feed Project a RemoteSpec, instead of the Remote directly from the XmlManifest. This way the RemoteSpec already has the full project URL, rather than just the base, permitting other types of manifests to produce the URL in their own style. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Refactor Manifest to be XmlManifestShawn O. Pearce2009-05-293-4/+4
| | | | | | | | We'll soon be supporting two different manifest formats, but we can't immediately remove support for the current XML one that is in wide spread use within Android. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Allow callers of GitConfig to specify the pickle file pathShawn O. Pearce2009-05-291-4/+8
| | | | | | | | This way we can put it in another directory than the config file itself, e.g. hide it inside ".git" when parsing a ".gitmodules" file from the working tree. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Teach GitConfig how to yield subsection namesShawn O. Pearce2009-05-191-0/+5
| | | | | | | This can be useful when pulling apart a configuration file, like finding all entries which match submodule.*.*. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Remove support for the extra <remote> definitions in manifestsShawn O. Pearce2009-05-194-91/+5
| | | | | | | | | These aren't that widely used, and actually make it difficult for users to fully mirror a forest of repositories, and then permit someone else to clone off that forest, rather then the original upstream servers. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Remove unused parsing support for <require commit=""/>Shawn O. Pearce2009-05-192-6/+0
| | | | | | | We haven't supported this in a while, but the parser was still here. Its all dead code, so strip it out. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Make 'repo branches -a' the default behaviorv1.6.7.5Shawn O. Pearce2009-05-181-18/+1
| | | | | | | Extensive discussion with users lead to the fact that needing to supply -a to view what they really wanted to see was just wrong. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Automatically guess Gerrit change number in "repo upload --replace"v1.6.7.4Ficus Kirkpatrick2009-05-052-2/+33
| | | | | This feature only works if you have one commit to replace right now (the common case).
* Fix ssh://user@hostname/ style URLs parsingv1.6.7.3Shawn O. Pearce2009-04-301-1/+1
| | | | | | | | I only tested this with ssh://hostname/ style URLs, so I failed to test ssh://user@hostname/ format, which failed if the hostname portion was longer than 1 character. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Disable SSH ControlMaster option on CygwinShawn O. Pearce2009-04-231-1/+1
| | | | | Bug: REPO-29 Signed-off-by: Shawn O. Pearce <sop@google.com>
* Require a project or '--all' to be specified when using 'repo start'.Ficus Kirkpatrick2009-04-221-2/+14
|
* Fix UnboundLocalError: local variable 'port' when using SSHv1.6.7.2Shawn O. Pearce2009-04-211-5/+4
| | | | | | | | | If the SSH URL doesn't contain a port number, but uses the ssh:// or git+ssh:// syntax we raised a Python runtime error due to the 'port' local variable not being assigned a value. Default it to the IANA assigned port for SSH, 22. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Perform copy file activity when creating a new work directoryv1.6.7.1Shawn O. Pearce2009-04-211-0/+1
| | | | | | | | | | | | Performance improvements in repo sync caused us to skip out of the initial Sync_LocalHalf without ever running CopyFiles, so we didn't create the top level Makefile in new clients whose manifest request one with a <copyfile> element. Now we run CopyFiles after the initial read-tree that populates the project working directory. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Change -p command to use stdout instead of stderr.Wink Saville2009-04-211-1/+1
|
* Fix 'repo sync' rebase logic on a published branchv1.6.7Shawn O. Pearce2009-04-211-6/+3
| | | | | | | | | If the current branch is published, but all published commits are merged into the manifest revision, but there is also at least one unpublished commit on the current branch, we should rebase the unpublished commit, rather than creating a merge commit. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Document the SSH ControlMaster behavior of repo syncShawn O. Pearce2009-04-211-0/+29
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Support a level 2 heading in help description textShawn O. Pearce2009-04-211-3/+13
| | | | | | | | The level 2 headings (denoted by ~) indent the heading two spaces, but continue to use the bold formatter to offset them from the other surrounding text. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Work around 'ControlPath too long' on Mac OS XShawn O. Pearce2009-04-211-1/+4
| | | | | | | | | | | | Mac OS X sets TMPDIR to a very long path within /var, so long that a socket created in that location is too big for a struct sockaddr_un on the platform, resulting in OpenSSH being unable to create or bind to a socket in that location. Instead we try to use the very short and very common /tmp, but fall back to the guessed default if /tmp does not exist. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Fix launching of editor under 'repo upload --replace'Shawn O. Pearce2009-04-181-3/+3
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Automatically use SSH control master support during syncShawn O. Pearce2009-04-185-3/+122
| | | | | | | | | By creating a background ssh "control master" process which lives for the duration of our sync cycle we can easily cut the time for a no-op sync of 132 projects from 60s to 18s. Bug: REPO-11 Signed-off-by: Shawn O. Pearce <sop@google.com>
* Make 'repo status' show the branch you are currently onShawn O. Pearce2009-04-181-0/+13
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Highlight projects which still have sync failures during 'repo status'Shawn O. Pearce2009-04-181-3/+15
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Print '(no branches)' if the output of `repo branches` is emptyShawn O. Pearce2009-04-181-0/+4
| | | | | | | | This way its clear the command did something, and reported that it had nothing to show you, because you have no active branches in this client. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Modify 'repo abandon' to be more like 'repo checkout' and 'repo start'Shawn O. Pearce2009-04-182-12/+51
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Improve checkout performance for the common unmodified caseShawn O. Pearce2009-04-183-23/+56
| | | | | | | | | Most projects will have their branch heads matching in all branches, so switching between them should be just a matter of updating the work tree's HEAD symref. This can be done in pure Python, saving quite a bit of time over forking 'git checkout'. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Add progress meter to 'repo start'Shawn O. Pearce2009-04-182-3/+11
| | | | | | | | | | This is mostly useful if the number of projects to switch is many (e.g. all of Android) and a large number of them are behind the current manifest revision. We wind up needing to run git just to make the working tree match, and that often makes the command take a couple of seconds longer than we'd like. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Make usage of open safer by setting binary mode and closing fdsShawn O. Pearce2009-04-184-11/+23
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Speed up 'repo start' by removing some forksShawn O. Pearce2009-04-182-26/+104
| | | | | | | | | | Its quite common for most projects to be matching the current manifest revision, as most developers only modify one or two projects at any one time. We can speed up `repo start foo` (that impacts the entire client) by performing most of the branch creation and switch operations in pure Python, and thus avoid 4 forks per project. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Add -p to `repo forall` to improve output formattingShawn O. Pearce2009-04-184-5/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | When trying to read log output from many projects at once it can be difficult to make sense of which messages came from where. For many professional developers it is common to want to view the last week's worth of your work, so you can write a weekly summary of your activity for your status report. This is easier with the new -p option: repo forall -pc git log --reverse --since=1.week.ago --author=sop produces a report of all commits written by me in the last week, formatted in a paged output display, with headers inserted in front of each project's output. Where this can be even more useful is with git log's pickaxe, e.g. now we can use: repo forall -pc git log -Sbar v1.0..v1.1 to locate all additions or removals of the symbol 'bar' since v1.0, up to and including v1.1. Before displaying the matching commits in a project, a project header is shown, giving the user some context information for the matching results. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Clarify the option section header in 'repo help grep'Shawn O. Pearce2009-04-181-2/+2
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Show options help after the summary for a commandShawn O. Pearce2009-04-181-1/+1
| | | | | | It is a bit clearer to read this way. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Improve the help text for 'repo init'Shawn O. Pearce2009-04-181-3/+14
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Clarify options that control the repo executable versionShawn O. Pearce2009-04-184-6/+8
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Correct note about local_manifest.xml capabilitiesShawn O. Pearce2009-04-181-5/+0
| | | | | | | | With the <remove-project> element we can remove projects, and fully replace them with a different definition. So this note is out of date. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Only display project path in 'repo stage -i'Shawn O. Pearce2009-04-181-2/+2
| | | | | | | Generally we only show the project path, relative from the top of the client. Showing the project name may be confusing for the end-user. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Improve the help text for 'repo start'Shawn O. Pearce2009-04-181-14/+4
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>
* Display the URL we will upload changes to for reviewShawn O. Pearce2009-04-181-1/+1
| | | | | | | | This gives the user the last chance to confirm where the change is going to be sent to. Knowing the review server URL will help the user decide if continuing with the upload makes sense. Signed-off-by: Shawn O. Pearce <sop@google.com>
* Improve the help text for 'repo upload'Shawn O. Pearce2009-04-181-13/+17
| | | | Signed-off-by: Shawn O. Pearce <sop@google.com>