decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Disappearing files - Using repo and git for Android | 270 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Disappearing files - Using repo and git for Android
Authored by: TJ on Friday, April 20 2012 @ 07:29 AM EDT

Some background on how Android source code is used by developers and why those copyrighted files might not actual exist in the Android repository but CAN be created by a CHECKOUT of a particular historical commit.

The tool used by Android developers to copy and sync the myriad individual project GIT source-code repositories that make up the entirety of the Android platform is repo.

re po manages the complexity of cloning/pulling all the individual project git repositories at the correct commit HEADs for each Android version. In other words, IceCreamSandwich might incorporate dnsmasq v2.54.2, giflib v3.6, bzip2 v1.3.4 (made-up versions numbers!) Each of those projects have likely advanced beyond the version Android fixes to. Within Android there may be additional patches to fix unique bugs or add/remove particular functionality for use in Android. Repo keeps track of which commit each project repository should checkout to match a particular version of Android.

In reality Android includes more than 100 external projects as well as many internal projects, each with its own GIT repository.

A GIT repository is a series of DIFFerence (patch) files tied to a unique history path such that applying the complete history to a particular commit ID will give the developer a unique view of the state of the project after CHECKOUT into the WORKING DIRECTORY.

The working directory contains the files the developer works with. Any particular file may actually have been built by applying one or hundreds of diff patches as they are stored in the git repository itself.

In the initial stages of a project some source-code files may be created almost complete. Over time small changes to address bugs or add functionality will be captured in small patches (diffs) that GIT keeps in its archive. Each time a COMMIT is made to the repository a new history marker is created referenced by a unique one-way hash uniquely identifying that commit's contents.

If removals of code or complete files are committed they are represented as 'negative' diffs - in other words, a diff can instruct the patch program to remove a few lines in a file, or all lines. If all lines in a file are removed that is equivalent to deleting the file. The state of the working directory after such a commit is as if the file never existed.

When working on the HEAD (most recent commit) of a repository any previous file deletions will mean the working directory DOES NOT CONTAIN the deleted file.

So if/when Oracle seek to show that Google is still infringing their copyright in the files at issue - assuming for this purpose the files are deemed copyright-protected - then the git repository cloned (downloaded) MIGHT NOT CONTAIN literal INFRINGING COPIES but a developer who clones the repository to their local system and subsequently does a CHECKOUT at some point in the history where those files exist (rather than the current HEAD) will cause the infringing files to be built by git core as it applies patch upon patch upon patch to put the working directory in the state matching the point in history the developer asks for.

Very technical but I hope this helps some of you understand how complex this subject is if you want to be 100% accurate.

[ Reply to This | Parent | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )