webRTC合并本地源码修改和官方更新

发布于:2025-07-26 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、总体思路:基于 Git 分支管理改动

  1. origin/main 是官方 WebRTC 主干(来自 webrtc.googlesource.com)。

  2. my/webrtc 是你自己开发和修改的分支。

  3. 每次 Google 更新 WebRTC,你从 origin/main 拉新代码,再把 my/webrtc 分支 rebase 到新版本上,解决冲突,继续维护。


🛠️ 二、初始化步骤

1. 安装 depot_tools 并拉取源码

git clone https://webrtc.googlesource.com/src webrtc

cd webrtc

gclient sync

这一步生成了 src/ 目录,WebRTC 官方源码全在这里。


2. 初始化 Git 分支结构

src/ 目录中执行:

cd src

git remote rename origin upstream #重命名远程仓库

验证:

git remote -v
# 应该输出:
# upstream https://webrtc.googlesource.com/src (fetch)
# upstream https://webrtc.googlesource.com/src (push)

git checkout -b my/webrtc    #创建自己的分支

upstream 指代 WebRTC 官方主仓库
my/webrtc 是你自己的开发分支,所有改动都在这个分支做

验证:

git branch

输出中带星号的是当前所在分支,例如:

main

* my/webrtc


✍️ 三、修改源码 & 提交

比如你要修改 modules/audio_processing 中某个类:

vim modules/audio_processing/some_class.cc
# 查看修改(还没 add)
git status

完成后使用正常的 Git 操作提交:

git add modules/audio_processing/some_class.cc
# 再次查看状态(显示为 staged)
git status

git commit -m "Fix AEC for low-latency stream"

你可以持续提交多个功能点,每个提交只做一件事。


🔁 四、同步 WebRTC 官方更新的完整流程

每隔一段时间 Google 会发布新版本,你需要更新:

1. 拉取 upstream 的新代码

git checkout main

git fetch upstream

git merge upstream/main

或者:

git pull upstream main

更新成功后,main 就是最新的 WebRTC。


2. 回到你自己的分支,执行 rebase

git checkout my/webrtc

git rebase main

这步将你所有的改动重新套用在最新版的 WebRTC 上。

🔧 如果出现冲突:

Git 会提示冲突位置,你需要:

# 修改冲突的文件
git add <冲突文件>
git rebase --continue

多次冲突就多次解决,每次 --continue


✅ 五、变更管理技巧

📍查看变更历史

git log --oneline --graph --all

#只查看自己的修改提交

git log --oneline my/webrtc ^main

📍查看分支差异

git diff main..my/webrtc

可以明确看到你对官方版本做了哪些修改。


🎁 六、备份你的分支(可选)

你可以将 my/webrtc 推送到你自己的 Git 仓库备份:

git remote add origin_my git@github.com:yourname/webrtc-custom.git
git push -u origin_my my/webrtc


🧩 七、优点总结

项目 本地分支法优势
🎯 改动隔离 改动集中在 my/webrtc,不污染官方主干
🆕 易于升级 官方版本更新后可直接 rebase
⚙️ 适合 patch 可生成 .patch 分享或自动合并
🤝 团队协作 多人合作时更容易管理每人改动


🧪 举个例子:

你要替换官方的 AudioDevice 模块(模拟设备):

  1. 修改文件:modules/audio_device/fake_audio_device.cc

  2. 新建分支并提交修改:

git checkout -b my/webrtc_audio_patch
git commit -am "Replace fake audio device with custom simulator"

  1. 后续 WebRTC 更新时:

git checkout main
git pull upstream main
git checkout my/webrtc_audio_patch
git rebase main

如有冲突就解决冲突,继续。

VS Code 完全可以帮你图形化完成 git addgit commit 的工作,而且比命令行方便很多。


✅ 一次性设置好后,你只需在 VS Code 中点几下就能完成修改、提交。

🔧 前提条件:

确保你已经在 VS Code 中打开了 WebRTC 的源码目录(例如 ~/webRTC/webRTC_Android/src)。


🚀 使用 VS Code 提交修改的操作流程:

  1. 修改文件(正常在编辑器中编辑代码即可)

  2. 打开 Source Control 面板(快捷键 Ctrl+Shift+G 或点击左侧第 3 个图标)

  3. 你会看到修改文件列表(和 git status 一样)

  4. 鼠标悬停每个文件,点 ➕(stage,也就是 git add

    或者点右上角的 “+” 一键全部 add

  5. 下方输入提交信息(commit message)

  6. 点击 ✔(commit)按钮

    就等价于 git commit -m "你的提交说明"


✅ 进阶:让 VS Code 自动帮你完成 git add(选填)

你可以设置:


json

复制编辑

"git.enableSmartCommit": true

然后 Ctrl+Enter 可以直接提交当前所有修改(自动 add)

设置方法:
  1. 打开 File > Preferences > Settings

  2. 搜索 git enableSmartCommit

  3. 勾选它 ✅


✅ 再进阶:添加“自动提交扩展插件”(可选)

如果你想一保存文件就自动提交,可以安装插件:

🔌 Auto Commit

但一般我们不建议“自动提交”,还是建议手动 review 后再提交,避免提交垃圾或 debug 测试代码。


总结

操作 命令行 VS Code 图形界面等价操作
修改代码 编辑器修改文件 编辑器修改文件
git add git add xxx Source Control 面板点 +
git commit git commit -m 填写信息,点
git diff git diff 点击文件查看差异(带颜色)


网站公告

今日签到

点亮在社区的每一天
去签到