用git修改android源码的正确方法

时间:2014-11-09 09:28:06

标签: android git android-source

我使用google的repo工具下载了android源代码,据我所知,android源代码树被分成许多git项目,repo工具负责维护它们。

我开始修改Android源代码,我一直在寻找正确的方法来跟踪我正在做的所有更改。

问题在于,当我修改源代码时,我并没有只停留在一个项目的上下文中,我一起修改了许多不同项目的代码。因此,单独承诺每个项目是不可能的。我需要一种方法来跟踪所有源文件,而不是在一个项目中。

我提出的解决方案(我很乐意接受其他想法)是从源代码的根树创建一个git项目,它将包含所有文件..

所以我从android源根目录做了:

git init
git add -A
git commit -m "Initialize"

git branch iss1
git checkout iss1
/* Making some changes */
git add -u
git commit -m "Bla bla"

看起来很不错,但是,当我向主人核实时,这些变化并没有消失!

所以我在iss1和master之间做了差异,输出是:

diff --git a/frameworks/av b/frameworks/av
index 6cd6792..5cb8b7c 160000
--- a/frameworks/av
+++ b/frameworks/av
@@ -1 +1 @@
-Subproject commit 6cd6792a3289c0c50542d8113068478dbc3a5ad0
+Subproject commit 5cb8b7cb86f3fb085725fb895fde7aec78a8f9df
diff --git a/frameworks/base b/frameworks/base
index 207cffe..cc7e875 160000
--- a/frameworks/base
+++ b/frameworks/base
@@ -1 +1 @@
-Subproject commit 207cffe95a868ea21b74dd54e3ef7821162ce870
+Subproject commit cc7e8757d84646c043379f13a44125f3a2acd99b
diff --git a/frameworks/native b/frameworks/native
index 6ee97e7..d1d57ab 160000
--- a/frameworks/native
+++ b/frameworks/native
@@ -1 +1 @@
-Subproject commit 6ee97e74d2c972dec2aa6a2f231b718eae54898f
+Subproject commit d1d57ab83b9eb31bbe698b634199e4a61e762168
diff --git a/frameworks/opt/telephony b/frameworks/opt/telephony
index 93faaed..9b688da 160000
--- a/frameworks/opt/telephony
+++ b/frameworks/opt/telephony
@@ -1 +1 @@
-Subproject commit 93faaed9056491c551ef7046e9e1de7d6397e95c
+Subproject commit 9b688da398d478de1f79671b932a93629d5b2246
diff --git a/system/core b/system/core
index 68c1968..3bc3d40 160000
--- a/system/core
+++ b/system/core
@@ -1 +1 @@
-Subproject commit 68c19686e8f9b5a88e3b2729a453d03516be79f1
+Subproject commit 3bc3d40faf78fc9ce5f11da745727730d8b30493
diff --git a/system/security b/system/security
index d9adda9..7524006 160000
--- a/system/security
+++ b/system/security
@@ -1 +1 @@
-Subproject commit d9adda97221fe2b7a1be38d8ab1dc954c630a1b9
+Subproject commit 7524006ad5343197b06e006871cf07cc71883dc9

看起来它必须对源代码中的子项目做一些事情,但我不明白。

那么我如何获得一种正确的方法来修改所有源代码并跟踪变化呢?

2 个答案:

答案 0 :(得分:1)

我选择使用的方式,以及我目前看到的最佳方式,实际上是使用

repo forall -c <command>

命令允许您在AOSP中的所有git项目中运行命令。

所以我开始检查掌握:

repo forall -c "git checkout master"

然后,创建新的分支并检查它:

repo forall -c "git branch iss1"
repo forall -c "git checkout iss1"

而且,进行一些更改,添加和提交..

repo forall -c "git add -u"
repo forall -c "git commit -m BLA"

到目前为止,这非常有效:)

答案 1 :(得分:0)

你应该分叉构成项目的所有不同的repo。这些可以在.repo文件夹的清单文件中找到(也可以在这里查看local_manifests文件夹)。更改这些清单文件以链接到您自己的github分支。然后你可以改变你想要的东西并将它提交给你自己的分叉回购。如果要将更改还原为最新同步,请运行

repo forall -vc "git reset --hard"
从您的根项目文件夹

。请记住,已经提交到您的分支的更改不会被还原,因为这会从这些分支中提取源。