josejithinps / git-repo Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/git-repo
License: Apache License 2.0
Automatically exported from code.google.com/p/git-repo
License: Apache License 2.0
Reported by Dave Bort <[email protected]> on Mon Feb 09 10:36:52 PST 2009
Source: JIRA REPO-4
I've got a commit [in the repo development repository], and git diff m/
default.. shows the deltas I'm expecting, but "repo upload" just gives me "no
branches ready for upload".
$ git branch
* master
--
I'll bet its because .git/config doesn't have any remote or merge entries
listed for the branch, because you didn't create it with --track.
Make a new branch and merge your master branch into it:
$ git branch --track for-upload m/default
$ git checkout for-upload
$ git merge master
$ repo upload
This is why we have repo start (more or less), its shorter than git branch --
track.
--
Repo should provide a way to make a branch "ready for upload", and the "no
branches ready for upload" message should tell the user how to use the new
feature to recover from that state.
--
I was thinking that
repo start <branch> <sha1>
could do the repo start, and then the git reset --hard <sha1>.
It might also be nice to have a -p option (or some other way) of having it do
that on just one project.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Andrew D. Stadler (Google) <[email protected]> on Mon Jul 13
20:43:29 PDT 2009
Source: JIRA REPO-42
I did "repo sync" with a specific directory (packages/apps/Email) and it
reported that it was making changes in other directories. This seems wrong;
If I tell it to work in a specific directory, I really don't want it making
changes in other directories - right?
dhcp-172-18-101-194:master stadler$ repo sync packages/apps/Email
remote: Counting objects: 572, done
remote: Compressing objects: 100% (19/19)
Unpacking objects: 100% (19/19), done.
From ssh://android-git.corp.google.com:29418/platform/packages/apps/Email
d0860a1..7d614f3 master -> goog/master
Fetching projects: 100% (2/2), done.
Deleting obsolete path /Volumes/src/repo/master/external/bluez
Deleting obsolete path /Volumes/src/repo/master/external/eglib
Deleting obsolete path /Volumes/src/repo/master/external/hcidump
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Andrew D. Stadler (Google) <[email protected]> on Thu May 21
11:33:27 PDT 2009
Source: JIRA REPO-33
I find it pretty annoying to have to bounce back and forth between the top
level and the project directory just to do git commands. Would it be worth
adding a command to repo that could this automatically? I'm thinking of
something like:
repo add path/to/file
- confirm file exists
- cd to file's directory
- while (there is no .git directory) cd ..
- git add file
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Matthew Buckett <[email protected]> on Wed Sep 02
04:15:21 PDT 2009
Source: JIRA REPO-47
Affected Version: 1.6.8.7
Allow the copyfile tags in the manifest to support creating a directory that
doesn't yet exist. In this example:
<project name="sakai">
<copyfile src="pom.xml" dest="pom.xml"/>
<copyfile src="kernel-deploy/pom.xml" dest="kernel-deploy/pom.xml"/>
<copyfile src="pack-demo/pom.xml" dest="pack-demo/pom.xml"/>
</project>
the folder kernel-deploy doesn't exist in a standard checkout. As git doesn't
track directories it can't be added without creating a file inside the
directory.
The layout of the projects is coming from converting a SVN project with lots
of externals to repo/git.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Attachments:
Finish the git submodule atomic sync support that is currently sitting
at the tip of the master branch.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 11:20
Reported by Shawn Pearce <[email protected]> on Tue Mar 03 12:17:23 PST 2009
Source: JIRA REPO-13
Affected Version: 1.6.1
If you have a manifest with no default element, and missing the necessary
revision or remote attributes on a project, a error.ManifestParseError is
raised, and it's not caught.
When it aborts there, it fails to update its clone of the manifest, so it'll
never get your fixes to add the missing bits, without manually poking at .repo
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Shawn Pearce <[email protected]> on Tue Mar 03 12:22:15 PST 2009
Source: JIRA REPO-14
Affected Version: 1.6.1
Create a mirror repository ("repo init --mirror").
% repo status
Traceback (most recent call last):
File "/Volumes/Code - Case Sensitive/Android-Mirror/.repo/repo/main.py", line
202, in <m
_Main(sys.argv[1:])
File "/Volumes/Code - Case Sensitive/Android-Mirror/.repo/repo/main.py", line
186, in _M
repo._Run(argv)
File "/Volumes/Code - Case Sensitive/Android-Mirror/.repo/repo/main.py", line
96, in _Ru
cmd.Execute(copts, cargs)
File "/Volumes/Code - Case Sensitive/Android-Mirror/.repo/repo/subcmds/
status.py", line
project.PrintWorkTreeStatus()
File "/Volumes/Code - Case Sensitive/Android-Mirror/.repo/repo/project.py",
line 299, in
if not os.path.isdir(self.worktree):
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
posixpath.p
st = os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Andrew D. Stadler (Google) <[email protected]> on Fri Jun 12
15:07:05 PDT 2009
Source: JIRA REPO-38
This is a feature request that I will actually try hacking myself, but filing
the FR so it can be tracked, commented on, etc.
The current workflow:
1. get manifest
2. copy to special location
3. repo init -m manifest-name
4. repo sync
5. to return to "latest", repo init -m default.xml
Is a heck of a lot more steps than our old friend p4 sync //branches/...@CL#
I propose the following changes that can be taken in parts or together to
improve the process at each step.
* The argument should be a simple filename. This has a dual benefit: 1.
allows you to download the manifest anywhere 2. you can type the command using
completion instead of a full retype. The code could simply pick up the file
and copy it into the correct directory, and then proceed using the existing
init code.
* Any time we repo sync and the manifest is not default.xml, print a warning.
This helps with the "why am I not getting anything" confusion, when you forgot
that you did this earlier.
* Add -m to repo sync and insert "repo init -m" step if found. This turns two
commands into one.
* For extra credit, convert build # into URL and download the manifest
automatically
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Since Gerrit Code Review supports Change-Id now, there is no sound reason
for the --replace option with `repo upload`. Remove it to reduce the code
complexity for users.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 11:17
Reported by Christopher Tate <[email protected]> on Mon Apr 06 16:50:26 PDT 2009
Source: JIRA REPO-20
When a repo command expects to invoke a pager (e.g. "repo status"), the pager
is run even when the underlying operation produces no output. This has the
effect of unexpectedly jumping the command line to the bottom of the terminal
window, seeming to insert however many blank lines were necessary to reach
that point.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Christopher Tate <[email protected]> on Fri Apr 10 11:29:10 PDT 2009
Source: JIRA REPO-22
Here's the situation I was in that I had to recover from:
0. I was working in a topic branch called "oldbranch", and in one package I
had made some edits that had not yet been committed.
1. From the top level, I typed "repo start newbranch"
2. The branch was successfully started and made current in fifty-ish packages,
but then when it got to the package in which I had uncommitted edits, branch
creation failed and repo errored out.
At this point, the repo was in a badly mixed state: newbranch had been
created and made current in half the repository, but oldbranch was still
current in the other half. The desired final state here was that newbranch be
created and made current in the entire repo. Here's what I did to recover:
3. cd to the package in which I had uncommitted edits, "git commit -a" to
commit them.
4. cd back to the top of the repo, and reran "repo start newbranch". This
errored out immediately, saying that the branch already existed.
5. I typed "repo abandon newbranch" to blow away the new branch in all the
packages in which it had been successfully created
6. I then typed "repo start newbranch" again, which finally set up the new
branch everywhere.
IMHO the biggest problem here was that Step 4 failed; I don't see why it
should be an error to attempt to (create and make current) a branch that
happens to already exist in some packages. At worst this might be a noop,
right? And the rest of the time, it would do exactly what I was attempting:
taking a partial-branch-existence state and making it more universal.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Mon May 04 08:24:19 PDT 2009
Source: JIRA REPO-31
Affected Version: 1.6.7.2
Users behind a firewall might be able to access port 29418 directly, but not
443 for HTTPS. repo should support using an HTTP proxy to communicate with
the review server's /ssh_info URL during repo upload.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Garret Pick <[email protected]> on Thu Feb 26 11:05:35 PST 2009
Source: JIRA REPO-9
From
http://groups.google.com/group/repo-discuss/browse_thread/thread/20a4f3fb82f49cf
7
An error I saw from repo prune. Note that the second time I ran it, it seemed
to work fine.
$ repo prune
Pending Branches
project bionic/
Traceback (most recent call last):
File "/home/pickgr/master/.repo/repo/main.py", line 202, in <module>
_Main(sys.argv[1:])
File "/home/pickgr/master/.repo/repo/main.py", line 186, in _Main
repo._Run(argv)
File "/home/pickgr/master/.repo/repo/main.py", line 96, in _Run
cmd.Execute(copts, cargs)
File "/home/pickgr/.repo/repo/subcmds/prune.py", line 52, in Execute
File "/home/pickgr/master/.repo/repo/project.py", line 126, in
commits
'--')
File "/home/pickgr/master/.repo/repo/project.py", line 1174, in
rev_list
p.stderr))
error.GitError: platform/bionic rev-list ('--abbrev=8', '--abbrev-
commit', '--pr
$
$
$ repo prune
$ git status
# Not currently on any branch.
nothing to commit (working directory clean)
$
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Andrew D. Stadler (Google) <[email protected]> on Tue May 26
13:51:51 PDT 2009
Source: JIRA REPO-35
How exactly does one rollback a submitted change?
The workflow wiki says,
# Use git revert [SHA1-to-revert] to create a new commit that is a negative
of the submitted SHA1.
# Use repo upload to push that rollback into gerrit for review.
Sounds good except, how do you know which SHA1 to use? For example, looking
at #3054 (23 May 18:58) I see three entries, and here are some snippets from
them:
tree 34a2c936f3f92745552e6f961efd421a9a453848
parent 61d8c706f809eaefcc1122194c787ea834a64159
parent 34975da6472e6a466d04e5e33cdc7edf9a6e1676
Merge commit '34975da6472e6a466d04e5e33cdc7edf9a6e1676'
* commit '34975da6472e6a466d04e5e33cdc7edf9a6e1676':
---
commit 34975da6472e6a466d04e5e33cdc7edf9a6e1676
tree 0a7f302fe4bfae31a0df37863983022d8bb2e8be
parent 474acb9ad815cd2104217236c607359476ce470b
parent e281887e8299a3b309812dfaafc6f089336be787
---
commit e281887e8299a3b309812dfaafc6f089336be787
tree f5cfc1349f0791c0bcfbf698edcd096178aaab68
parent e1b02e4f2279e3eb4b9bc280fa2ded7bb07a92ae
I count 8 sha-1 values listed here.
Given that it takes a few steps to get this done, and some uncertainty, would
it be possible to add a "repo rollback" command that would allow you simply
enter a CL number (e.g. "repo rollback 3054") and have it DWIM ?
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Jean-Baptiste Queru <[email protected]> on Wed Apr 22 13:23:44 PDT 2009
Source: JIRA REPO-26
Affected Version: 1.6.7
Environment: ssh -V: OpenSSH 5.1p1, OpenSSL 0.9.7l 28 Sep 2006
Disabling control master seems to work; e.g. "repo forall -c git fetch" is
fine.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Christopher Tate <[email protected]> on Wed Apr 08 13:28:12 PDT 2009
Source: JIRA REPO-21
Because a common Android workflow involves topic branches spanning multiple
embedded git projects, it would be nice to have some repo-level facilities for
viewing and selecting among currently-started topic branches. In particular,
it would be pretty convenient to have:
repo checkout branchname
as an easy-to-remember, easy-to-type shortcut for 'repo forall -c git checkout
branchname'. It would also be really nice to have repo synthesize a concise
view of all extant branches, something like
repo branches [package1, package2, ...]
that would wrap the corresponding 'repo forall [package1, package2, ...] -c
git branch | sort -u' etc.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Ed Heyl <[email protected]> on Mon Aug 31 10:04:48 PDT 2009
Source: JIRA REPO-46
Environment: Linux: gHardy
JBQ said he saw the same problem externally, and had to do empty merges
between manifests to resolve the issue.
I wasn't sure which branch I 'was' on (master I believe), but I tried to run
'repo init -b donut' to switch to the donut branch, but repo failed with:
repo init -b donut
.repo/manifests/: discarding 49 commits removed from upstream
project .repo/manifests/
First, rewinding head to replay your work on top of it...
Applying: new project
/usr/local/google/src/android-git/.repo/manifests/.git/rebase-apply/patch:13:
trailing whitespace.
warning: 1 line adds whitespace errors.
Applying: Remove spurious whitespace
error: readonly-korg-proprietary-master.xml: does not exist in index
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Renaming readonly-korg-proprietary-master.xml => stage-korg-donut.xml
Auto-merging stage-korg-donut.xml
CONFLICT (rename/modify): Merge conflict in stage-korg-donut.xml
Failed to merge in the changes.
Patch failed at 0002 Remove spurious whitespace
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
fatal: cannot create default in manifest
BUT, as you can see I wasn't even on any branch, repo confused?
android-build@sekiwake:/usr/local/google/src/android-git$ git branch -av
fatal: Not a git repository (or any of the parent directories): .git
android-build@sekiwake:/usr/local/google/src/android-git$ cd .repo/manifests
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$ ls
default.xml readonly-korg-donut.xml readonly-korg-proprietary-donut.xml
stage-korg-donut-release.xml stage-korg-donut.xml
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$
android-build@sekiwake:/usr/local/google/src/android-git/.repo/manifests$ git
branch -av
* (no branch) c7fdd2b new project
default f3d8636 new project: platform/external/
proguard.git
remotes/m/master -> origin/master
remotes/origin/cupcake fdff64a Add appropriate projects to the
staging area
remotes/origin/donut b2c12d3 Remove spurious whitespace
remotes/origin/donut-release 887e073 new project
remotes/origin/eclair 83a9499 Manifest for eclair mirror +
proprietary files
remotes/origin/eclair-plus-aosp 2b66785 Remove unnecessary manifests
remotes/origin/eclair-release 5888623 reconcile difference between
eclair and eclair-release manifests.
remotes/origin/icu4c-merge 2674ab4 Manifest that includes the
sandbox for icu4c merges
remotes/origin/master f3d8636 new project: platform/external/
proguard.git
remotes/origin/master-webkit-merge 0279630 Update default.xml to point
frameworks/base and external/webkit to master-webkit-merge.
remotes/origin/master_gl 032466e merge master in master_gl
remotes/origin/readonly-p4-donut db8d2ea Always use FQDN for android-git
remotes/origin/readonly-p4-master ab61a73 Always use FQDN for android-git
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Ken Shirriff <[email protected]> on Fri Jun 26 16:42:29 PDT 2009
Source: JIRA REPO-41
Environment: Linux jaywalk.mtv.corp.google.com 2.6.24-gg24-generic #1 SMP Wed
Apr 22 21:48:06 PDT 2009 x86_64 GNU/Linux
repo branches doesn't display useful output for me. Andy Stadler says my
output isn't like his, so there must be a bug.
Specifically, it doesn't always display the package that has the branch. E.g.
jaywalk:~/donut2$ repo branches
* calendar | in frameworks/base
tmp |
It turns out that tmp is in packages/apps/Calendar and packages/providers/
CalendarProvider, but repo branches doesn't tell me that.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Mon Feb 09 10:54:29 PST 2009
Source: JIRA REPO-8
repo should return useful exit codes and use stdout/stderr in a consistent way
in case someone wants to write a script that calls repo.
In Git we split commands into two different groups:
- plumbing: These are scriptable commands that offer very small building
blocks of the Git system. The command line options are usually only
--long-gnu-style and the input/output streams are formatted for easy machine
parsing, not human readability. The commands, their options and their
stream formats are frozen in stone.
- porcelain: These are commands the human can invoke. We can change their
options, use short options, have prettier output formats that are less
regular (and more difficult to parse). These aren't meant to be invoked by
script writers.
We should consider doing the same thing with repo. Especially since the
repo user interface may change and evolve a bit as we learn more about the
general Android workflow.
In terms of repo (since its all one big Python script) the plumbing commands
may just be small wrappers that convert command line arguments into
parameters for an internal "library" function. Thus one can script repo by
either importing its library and calling the function directly in Python, or
by executing repo's plumbing command to get to the same function. Human
commands might call multiple functions, and have a different entry point
that parses the command line arguments differently.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Cary Clark <[email protected]> on Fri Apr 17 06:14:22 PDT 2009
Source: JIRA REPO-25
Affected Version: 1.6.5
Environment: internal to Google
The y/n prompt in repo upload is a necessary safeguard for external uploads,
but less relevant to uploads to our internal tree. A configuration option in
~/.gitconfig that says "when uploading to internal server don't prompt" would
be helpful.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Tue Mar 03 12:26:05 PST 2009
Source: JIRA REPO-16
Affected Version: 1.6.1
repo init --mirror should use refs/*, to fully mirror the remote, instead of
just refs/heads/*.
This may be necessary to support replication of temporary change refs created
by Gerrit (under refs/changes/*).
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
I get the following crash if I have already deleted
packages/apps/SOME_PACKAGE locally. I think it should just continue on, as
it's just going to try to delete it anyway.
This is after removing packages/apps/SOME_PACKAGE from manifest.xml and
re-syncing.
Fetching projects: 100% (163/163), done.
Traceback (most recent call last):
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/main.py", line 235,
in <module>
_Main(sys.argv[1:])
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/main.py", line 217,
in _Main
repo._Run(argv)
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/main.py", line 123,
in _Run
cmd.Execute(copts, cargs)
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/subcmds/sync.py",
line 229, in Execute
if self.UpdateProjectList():
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/subcmds/sync.py",
line 152, in UpdateProjectList
if project.IsDirty():
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/project.py", line
289, in IsDirty
'--refresh')
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/project.py", line
1303, in runner
capture_stderr = True)
File "/home/USERNAME/projects/PROJECTNAME/.repo/repo/git_command.py",
line 189, in __init__
raise GitError('%s: %s' % (command[1], e))
error.GitError: update-index: [Errno 2] No such file or directory:
'/home/USERNAME/projects/PROJECTNAME/packages/apps/SOME_PACKAGE'
Original issue reported on code.google.com by [email protected]
on 25 Sep 2009 at 7:25
Reported by Mike Lockwood <[email protected]> on Fri Jun 12 15:00:43 PDT 2009
Source: JIRA REPO-37
I would like an easy way to get a list of files that would change if I
executed "repo sync".
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Fri Mar 20 07:53:46 PDT 2009
Source: JIRA REPO-17
Affected Version: 1.6.4
From
http://groups.google.com/group/repo-discuss/browse_thread/thread/234ae79d11a39c8
9:
repo forall's current behaviour is to continue processing even if a command
had failed. This can be difficult to detect command failure that happened
early on in the output when each repo prints a few lines of its own.
Looking at the code it does seem possible to detect if a command failed by
checking the exit status of repo itself, but it would be nice to have the
option to abort processing in the event of command failure as well, even if as
an extra command-line switch.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Jean-Baptiste Queru <[email protected]> on Tue Mar 31 21:02:35 PDT 2009
Source: JIRA REPO-19
The repo script uses pager, and inherently will produce control character
(coloring) to standard output, even if the output is redirected to another
pipe or script.
This is because the script checks for the terminal presence on FD 0, and in
case of redirection FD 0 is still attached to the terminal.
.repo/repo/pager.py needs to be modified to fix this, replacing isatty(0)
with isatty(1). (Probably, it should be not os.isatty(0) or not os.isatty(1))
(see also http://b.android.com/2004 for original issue)
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Wink Saville <[email protected]> on Tue Mar 03 12:24:23 PST 2009
Source: JIRA REPO-15
Affected Version: 1.6.1
$ repo status
project frameworks/base/ (*** NO BRANCH ***)
M- Android.mk
M- core/java/android/net/MobileDataStateTracker.java
M- core/java/android/pim/ContactsAsyncHelper.java
M- core/java/android/provider/Checkin.java
M- core/java/android/provider/Settings.java
-- core/java/android/provider/Settings.java.BASE.21007.java
-- core/java/android/provider/Settings.java.LOCAL.21007.java
-- core/java/android/provider/Settings.java.REMOTE.21007.java
M- core/java/android/webkit/gears/AndroidRadioDataProvider.java
.....
.....
.....
A- telephony/java/android/telephony/cdma/TtyIntent.java
M- telephony/java/android/telephony/gsm/GsmCellLocation.java
Um telephony/java/android/telephony/gsm/SmsManager.java
Um telephony/java/android/telephony/gsm/SmsMessage.java
Traceback (most recent call last):
File "/usr/local/google/users/wink/repo-clients/master/.repo/repo/main.py",
line 202, in ?
_Main(sys.argv[1:])
File "/usr/local/google/users/wink/repo-clients/master/.repo/repo/main.py",
line 186, in _Main
repo._Run(argv)
File "/usr/local/google/users/wink/repo-clients/master/.repo/repo/main.py",
line 96, in _Run
cmd.Execute(copts, cargs)
File "/usr/local/google/users/wink/repo-clients/master/.repo/repo/subcmds/
status.py", line 27, in Execute
project.PrintWorkTreeStatus()
File "/usr/local/google/users/wink/repo-clients/master/.repo/repo/
project.py", line 362, in PrintWorkTreeStatus
line = ' %s%s\t%s => (%s%%)' % (i_status, f_status,
TypeError: not all arguments converted during string formatting
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Shawn Pearce <[email protected]> on Wed Jun 17 14:14:12 PDT 2009
Source: JIRA REPO-39
Affected Version: 1.6.8.2
if a branch has uncommitted changes, "repo checkout otherbranch" says "error:
no project has branch otherbranch"
which is a bit confusing
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Christopher Tate <[email protected]> on Fri Jun 05 18:28:29 PDT 2009
Source: JIRA REPO-28
Right now, repo prompts with something like this:
$ repo upload .
Upload project system/core/:
branch work-on-stuff ( 1 commit, Fri Jun 5 18:20:08 2009 -0700):
17df71e1 Do some work on some stuff
to https://android-git.corp.google.com/g/Gerrit (y/n)?
At this point in the process, having one last chance to verify what that
actually *is* would be nice. I'm envisioning a prompt like this:
to https://android-git.corp.google.com/g/Gerrit [ (y)es / (n)o / (s)how ]?
where 's's would do a 'git show' on the relevant SHA, then repeat the upload
prompt.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Fri Apr 10 14:16:23 PDT 2009
Source: JIRA REPO-23
Affected Version: 1.6.4
After I submitted a cl (reviewed and everything), I tried to run "repo abandon
<branchname>", but got the following error
$ repo abandon bug_1740989
error: You have local changes to 'apps/Phone/Foo.java'; cannot switch branches.
Traceback (most recent call last):
File "/Volumes/AndroidHD/.repo/repo/main.py", line 230, in <module>
_Main(sys.argv[1:])
File "/Volumes/AndroidHD/.repo/repo/main.py", line 214, in _Main
repo._Run(argv)
File "/Volumes/AndroidHD/.repo/repo/main.py", line 121, in _Run
cmd.Execute(copts, cargs)
File "/Volumes/AndroidHD/.repo/repo/subcmds/abandon.py", line 42, in Execute
project.AbandonBranch(nb)
File "/Volumes/AndroidHD/.repo/repo/project.py", line 747, in AbandonBranch
quiet=True)
File "/Volumes/AndroidHD/.repo/repo/project.py", line 829, in _Checkout
raise GitError('%s checkout %s ' % (self.name, rev))
error.GitError: platform/apps/Phone checkout refs/remotes/korg/master
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Sriram Raman <[email protected]> on Sun Mar 22 21:14:00 PDT
2009
Source: JIRA REPO-18
Affected Version: 1.6.3
repo forall in a mirror includes the manifest and the tools/repo project, even
though these aren't listed in the manifest the client was initialized with.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Andrew D. Stadler (Google) <[email protected]> on Mon Jul 13
22:34:38 PDT 2009
Source: JIRA REPO-43
Forwarded conversation
Subject: can't obtain weekly report while synced to an older build
------------------------
Original report:
$ repo forall -pc git log --all --author=stadler --since=8.days.ago
Traceback (most recent call last):
File "/Volumes/src/repo/master/.repo/repo/main.py", line 235, in <module>
_Main(sys.argv[1:])
File "/Volumes/src/repo/master/.repo/repo/main.py", line 217, in _Main
repo._Run(argv)
File "/Volumes/src/repo/master/.repo/repo/main.py", line 123, in _Run
cmd.Execute(copts, cargs)
File "/Volumes/src/repo/master/.repo/repo/subcmds/forall.py", line
187, in Execute
stderr = stderr)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
subprocess.py",
line 593, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
subprocess.py",
line 1079, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory:
'/Volumes/src/repo/master/external/bluetooth/bluez'
Note: This is happening while I am synced to an earlier build # (the build
was broken), which is probably related.
The build has turned green since, so I'm trying an init to default.xml, repo
sync, and repeat the command. But it seems like getting weekly stats should
work even if one is temporarily parked on an older build.
Should I file a bug? Workaround?
--Andy
p.s. Confirmed: after repo sync, it works properly.
----------
Response from Shawn:
Feature request please. We should have been able to execute this
against a bare repository and not a working directory (e.g. with a
--bare flag) and we should have been able to continue (but with an
error message to stderr) even though one project doesn't exist. In a
case of "what have I done the past 8 days" skipping a project you do
not have (but with an one line error/warning message) is probably OK,
you don't have it so you didn't work in it. In other cases it may be
important, e.g. grep'ing for something about bluez and you don't have
bluez is a certain problem. :-)
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Brian Swetland <[email protected]> on Mon Feb 09 10:17:17 PST
2009
Source: JIRA REPO-2
I had this in my local-manifest.xml:
<remove-project name="kernel/common"/>
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-
htc-2.6.24"/>
Which was a typo (I meant ...25):
bulgaria% repo sync
remote: Counting objects: 5319, done.
remote: Compressing objects: 100% (1260/1260), done.
remote: Total 4985 (delta 4119), reused 4538 (delta 3701)
Receiving objects: 100% (4985/4985), 1.07 MiB | 994 KiB/s, done.
Resolving deltas: 100% (4119/4119), completed with 200 local objects.
From git://android-git/public/kernel/msm
* [new branch] android-msm-2.6.25 -> korg/android-msm-2.6.25
* [new branch] android-msm-2.6.27 -> korg/android-msm-2.6.27
* [new branch] android-msm-htc-2.6.25 -> korg/android-msm-htc-2.6.25
* [new branch] msm-2.6.25 -> korg/msm-2.6.25
Traceback (most recent call last):
File "/scratch/open/.repo/repo/main.py", line 202, in <module>
_Main(sys.argv[1:])
File "/scratch/open/.repo/repo/main.py", line 186, in _Main
repo._Run(argv)
File "/scratch/open/.repo/repo/main.py", line 96, in _Run
cmd.Execute(copts, cargs)
File "/scratch/open/.repo/repo/subcmds/sync.py", line 106, in Execute
if not project.Sync_LocalHalf():
File "/scratch/open/.repo/repo/project.py", line 591, in Sync_LocalHalf
lost = self._revlist(not_rev(rev), HEAD)
File "/scratch/open/.repo/repo/project.py", line 1000, in _revlist
return self.work_git.rev_list(*args)
File "/scratch/open/.repo/repo/project.py", line 1147, in rev_list
p.stderr))
error.GitError: kernel/msm rev-list (u'^refs/remotes/korg/android-msm-
htc-2.6.24', 'HEAD'): fatal: bad revision '^refs/remotes/korg/android-msm-
htc-2.6.24'
after fixing the manifest, I got:
bulgaria% repo sync
error: refs/remotes/m/master points nowhere!
info: [kernel/msm] Discarding 2 commits
which seems to have fixed things, but sounded like it had a problem. later
repo syncs did not fail
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Nick Pelly <[email protected]> on Thu Jun 04 14:36:12 PDT 2009
Source: JIRA REPO-27
Affected Version: 1.6.7.3
Environment: linux
I often have a couple of "DO NOT SUBMIT: debug" commits to turn on debugging
flags on top of the commit under review.
Having to maintain two parallel git branches in order to upload changes to the
commit under review is a real pain in the ass for my workflow.
It would be great if you could remove commits from repo upload --replace
2 cents.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Andrew D. Stadler (Google) <[email protected]> on Tue Jun 09
13:22:04 PDT 2009
Source: JIRA REPO-36
In gerrit-209 I asked if we could wrap the display of long commit messages,
which were forcing H scrolling on the web page. Shawn said no, because no
other git tools handle wrapping either. The expectation is that that git
messages must wrap at 80 (in fact, apparently there is a style guide somewhere
that the first line should wrap at 60.
Since the onus is on the writer to follow these guidelines, here are some
suggestions to make things better in the workflow.
1. When the user types "git commit", the editor should be launched with hard-
wrapping enabled (this is done already in "g4 change". e.g. vi -c "set
textwidth=80"
2. When the user types "repo upload", suggest checking the message and
offering warnings such as:
$ repo upload path/to/file
warning: commit message should wrap at 80 column limit. continue anyway? (y/
n)
This is lightweight, does not block "I really meant to do it", and will never
appear once you remember to write your comments that way.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Tue Apr 14 18:06:31 PDT 2009
Source: JIRA REPO-24
Affected Version: 1.6.5
If the manifest project is not on a "proper" branch, we get a stack trace from
just about every command:
$ repo start gl
frameworks/base hardware/libhardware system/core vendor/htc/dream
vendor/htc/sapphire vendor/qcom/proprietary
Traceback (most recent call last):
File "/Volumes/sources/git/android/master/.repo/repo/main.py", line 230, in ?
_Main(sys.argv[1:])
File "/Volumes/sources/git/android/master/.repo/repo/main.py", line
214, in _Main
repo._Run(argv)
File "/Volumes/sources/git/android/master/.repo/repo/main.py", line
121, in _Run
cmd.Execute(copts, cargs)
File "/Volumes/sources/git/android/master/.repo/repo/subcmds/start.py",
line 51, in Execute
for project in self.GetProjects(args[1:]):
File "/Volumes/sources/git/android/master/.repo/repo/command.py",
line 60, in GetProjects
all = self.manifest.projects
File "/Volumes/sources/git/android/master/.repo/repo/manifest.py",
line 148, in projects
self._Load()
File "/Volumes/sources/git/android/master/.repo/repo/manifest.py",
line 176, in _Load
if b.startswith(R_HEADS):
AttributeError: 'NoneType' object has no attribute 'startswith'
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by mark gross <[email protected]> on Fri Feb 06 15:42:17 PST 2009
Source: JIRA REPO-1
Environment: Linux and mac os hosts.
Having named (tagged) versions of the core Android Open source project code is
needed for folks to build branches or patchsets of experimental work of the
core code base.
Of course the CTT needs to lay down tags periodically on known good enough
versions for everyone to use as baselines.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Shawn Pearce <[email protected]> on Thu Apr 23 16:27:37 PDT 2009
Source: JIRA REPO-29
Affected Version: 1.6.7.2
Environment: Cygwin/Vista
Ynder Cygwin/Vista is that I get this error:
$ repo sync
mm_receive_fd: no message header
muxserver_accept_control: failed to receive fd 0 from slave
ssh_msg_recv: read: header
muxclient: msg_recv
fatal: The remote end hung up unexpectedly
error: Cannot fetch manifests
Setting GIT_SSH=ssh works around.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Mon Feb 09 10:46:28 PST 2009
Source: JIRA REPO-7
The pre-rebase hook can be used to prevent a user from rebasing changes they
have published to Gerrit.
The refs/published/$branch tip can be used to see what has been published and
forbid rebasing those parts, but we need a way to clear out refs/published if
the change is rejected in Gerrit and the user really wants to do an amend or
rebase to address review comments.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Brian Swetland <[email protected]> on Mon Feb 09 10:21:23 PST
2009
Source: JIRA REPO-3
Quick fix:
- allow local_manifest.xml to indicate items to exclude from the main
manifest.xml
Best fix:
- allow a manifest.xml to specify that it's based on (or a subclass of, etc)
another manifest
- allow a manifest.xml to specify items to exclude from the manifests it
extends
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Cedric Beust <[email protected]> on Mon Jun 22 09:41:59 PDT 2009
Source: JIRA REPO-40
When I try to start a branch that already exists, repo still asks me to supply
the project name, which seems unnecessary if that branch name is unique:
$ repo branches
CommentReplies | in gerrit
* Debug | in gwtexpui
InlineImages | in gerrit
*P InlineImagesCherryPick | in gerrit
P SearchByUser | in gerrit
master | in gerrit
save | in gerrit
$ repo start SearchByUser
error: at least one project must be specified
Couldn't repo determine that the project is `gerrit` since it's the only one
that contains a branch called SearchByUser?
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Sat Feb 28 10:40:55 PST 2009
Source: JIRA REPO-10
From http://code.google.com/p/android/issues/detail?id=1675
repo should delete source directories of projects that get deleted from the
manifest
Repro:
-start with a master branch synced before cupcake was merged into master
-repo sync to the latest (which includes cupcake, and where a project was
moved around)
-try to build
Observed:
the old location of the project that was moved doesn't get cleared, causing
the build system to include makefiles for both the old and new location,
which creates a conflict and causes the build to fail.
Workaround:
Manually delete the offending directory
Note:
repo probably doesn't need full automation to detect the spurious
directories. The manifest could contain a list of known old project
locations that need to be deleted if they're present.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Shawn Pearce <[email protected]> on Mon Feb 09 10:38:15 PST 2009
Source: JIRA REPO-5
When talking about m/cupcake and m/donut, having them both in the same client
requires that we parse the manifest XML for both, so we can initialize them.
repo should parse all possible manifests and export the symbolic refs under
the m/ namespace whenever possible, to simplify compares and merges across
manifest revisions.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Dave Bort <[email protected]> on Thu Apr 30 18:21:35 PDT 2009
Source: JIRA REPO-30
Affected Version: 1.6.7.2
I have a project with two commits on it, which I had uploaded, thus creating
two changes.
I made a change to the HEAD commit, and wanted to update the change. Since I
only touched HEAD, the change based on HEAD^ didn't actually need to change.
I ran "repo upload --replace", and entered the numbers for the two changes.
When I exited the editor, repo failed with an error, but still did what I
wanted it to do:
$ repo upload --replace .
Counting objects: 18, done.
Delta compression using 4 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (10/10), 3.41 KiB, done.
Total 10 (delta 6), reused 0 (delta 0)
To ssh://[email protected]:29418/platform/frameworks/base
* [new branch] config -> refs/for/donut
* [new branch] 74114a38e5da300d6094c7a610399d0bed557de0 -> refs/changes/
847/new
! [remote rejected] 8015cf1cc3698542407c316918de20683da32d66 -> refs/changes/
845/new (patch set exists)
error: failed to push some refs to 'ssh://[email protected]:
29418/platform/frameworks/base'
--------------------------------------------
[FAILED] frameworks/base/ config (Upload failed)
I see two ways to solve this:
1. Recognize that the "patch set exists" error means that this upload is a no-
op, and treat it as success
2. Provide a way for upload --replace to let me mark a commit as "do not re-
upload".
(1) seems to be the most straightforward, especially since repo actually did
what I wanted it to do (the HEAD commit was pushed successfully), unless
there are some other cases where "patch set exists" is actually an error.
(2) would be nice, especially since then I wouldn't have to look up the change
number for a push that I know will be a no-op, but this is tricky from a UI
perspective. You should only be able to set "do not re-upload" on commits
whose parents are already submitted/merged or whose parents are also being
marked "do not re-upload".
Anyway, this seems like a corner case, and it did what I wanted it to, so I'm
marking it as "Minor".
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Marc Blank <[email protected]> on Sat Jul 18 17:08:01 PDT 2009
Source: JIRA REPO-44
When switching branches with repo checkout <another_branch> while there are
uncommitted changes in the current branch, the error message given is:
error: no project has branch <another_branch>
which is not correct, since there is such a branch.
If I instead use git checkout <another_branch>, I get the correct message:
error: You have local changes to 'somethingorother'; cannot switch branches.
Committing the change and then using repo checkout <another_branch> works...
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Jean-Baptiste Queru <[email protected]> on Tue Mar 03 12:13:17 PST 2009
Source: JIRA REPO-12
Affected Version: 1.6.1
I find that I'm running repo init every few hours while I work (whenever I
find myself in a situation I don't know how to recover from). I'd like to
avoid hitting the server each time, though, since it takes quite a while (and
uses some bandwidth).
Is there any way I could just keep a clean "reference" repo client (i.e. where
all I do is repo sync), and then repo init new clients from that one? That
way, creating new clients is just a bunch of local file copies, which should
be much faster than a network transfer.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Andrew D. Stadler (Google) <[email protected]> on Fri May 22
16:32:51 PDT 2009
Source: JIRA REPO-34
The output of repo sync is entirely internal and quite repetitive:
$ repo sync
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 6), reused 3 (delta 0)
Unpacking objects: 100% (11/11), done.
From git://android.git.kernel.org/tools/repo
2f968c9..498a0e8 master -> origin/master
2f968c9..498a0e8 stable -> origin/stable
* [new tag] v1.6.7.5 -> v1.6.7.5
From git://android.git.kernel.org/tools/repo
* [new tag] v1.6.7.4 -> v1.6.7.4
remote: Counting objects: 78, done
remote: Compressing objects: 100% (63/63)
Unpacking objects: 100% (63/63), done.
From ssh://android-git.corp.google.com:29418/platform/manifest
d2f06d9..d9584ca cupcake -> origin/cupcake
78ef62e..9d863ff donut -> origin/donut
22f7151..fc3614e donut-release -> origin/donut-release
* [new branch] eclair-release -> origin/eclair-release
8c6d287..c122554 master -> origin/master
9b08529..8d04dec master_gl -> origin/master_gl
remote: Counting objects: 2126, done
remote: Compressing objects: 100% (45/45)
Unpacking objects: 100% (45/45), done.
This kind of stuff isn't really interesting to the "average user" who just
wants latest files. Can you put it under a -v type option?
Second, the final step is not verbose enough:
Syncing work tree: 79% (120/151)
And this is exactly where the "average user" would like to see *more* output:
What files were updated on my machine?
Can you please change repo sync to be more like this:
$ repo sync
Updating repositories.... (maybe do a live % thing here?)
Syncing work tree:
updating: packages/apps/Calendar/myActivity.java
updating: packages/apps/Email/providers.xml
..etc...
$
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Mon Feb 09 10:43:15 PST 2009
Source: JIRA REPO-6
If a project hasn't been created by "repo sync" yet "repo status" should at
least print a message to let the user know the project is missing and needs to
be created by "repo sync".
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
Reported by Andrew D. Stadler (Google) <[email protected]> on Wed Aug 12
23:26:53 PDT 2009
Source: JIRA REPO-45
I tried to do repo upload but I forgot to connect the VPN. The answer was a
many-line stack trace:
$ repo upload --replace .
Traceback (most recent call last):
File "/Volumes/src/repo/master/.repo/repo/main.py", line 235, in <module>
_Main(sys.argv[1:])
File "/Volumes/src/repo/master/.repo/repo/main.py", line 217, in _Main
repo._Run(argv)
File "/Volumes/src/repo/master/.repo/repo/main.py", line 123, in _Run
cmd.Execute(copts, cargs)
File "/Volumes/src/repo/master/.repo/repo/subcmds/upload.py", line 313, in
Execute
self._ReplaceBranch(project_list[0], people)
File "/Volumes/src/repo/master/.repo/repo/subcmds/upload.py", line 262, in
_ReplaceBranch
self._UploadAndReport([branch], people)
File "/Volumes/src/repo/master/.repo/repo/subcmds/upload.py", line 268, in
_UploadAndReport
branch.UploadForReview(people)
File "/Volumes/src/repo/master/.repo/repo/project.py", line 155, in
UploadForReview
people)
File "/Volumes/src/repo/master/.repo/repo/project.py", line 555, in
UploadForReview
if branch.remote.ReviewProtocol == 'ssh':
File "/Volumes/src/repo/master/.repo/repo/git_config.py", line 471, in
ReviewProtocol
info = urlopen(u).read()
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
urllib2.py", line 121, in urlopen
return _opener.open(url, data)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
urllib2.py", line 374, in open
response = self._open(req, data)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
urllib2.py", line 392, in _open
'_open', req)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
urllib2.py", line 353, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
urllib2.py", line 1108, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
urllib2.py", line 1075, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error (8, 'nodename nor servname provided, or not
known')>
What's odd is that "repo sync ." does the right thing:
$ repo sync .
ssh: Could not resolve hostname android-git.corp.google.com: nodename nor
servname provided, or not known
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Naseer Ahmed <[email protected]> on Wed May 06 05:55:27 PDT
2009
Source: JIRA REPO-32
Environment: All
Allow switching between tags to go back to older releases easily. The working
tree (or default remote tracking branch) should update to the older/newer tag
as needed and projects not present in the older tag should be deleted/moved to
temp location.
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:10
Reported by Shawn Pearce <[email protected]> on Mon Mar 02 16:48:44 PST 2009
Source: JIRA REPO-11
OpenSSH on UNIX platforms can support multiplexing multiple ssh connections
onto a single TCP stream, saving the startup and teardown costs.
For applications like repo, fetching 120+ projects over SSH require forking
120+ ssh clients, probably all pointing at the same server. Most of the time
is spent starting the SSH connection. By using a ControlMaster connection
opened ahead of time these 120+ connections can send all of their data through
an existing stream, significantly reducing the wall-clock time required for a
no-op "repo sync".
Original issue reported on code.google.com by [email protected]
on 24 Sep 2009 at 9:09
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.