QUIC构建1——chromium镜像,clone文件depot_tools的过程+git过程中的问题

问题1

(1)安装depot_tool超时,的问题,寻找镜像

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

(2)镜像:
https://source.codeaurora.org/quic/lc/chromium/tools/depot_tools

问题2

(1)git中的链接替换
问题:warning: 远程 HEAD 指向一个不存在的引用,无法检出。

文件下是空白的,于是cd 到对应的depot_tools文件下,做了下面的操作,参考链接进行解决;
https://blog.csdn.net/williamvon/article/details/71421810

个人理解:有好几个branch,需要从中checkout一个分支,并创建分支进行保存,即可解决。

larry@larry-VirtualBox:~/opt$ git clone https://source.codeaurora.org/quic/lc/chromium/tools/depot_tools.git
正克隆到 'depot_tools'...
remote: Enumerating objects: 360, done.
remote: Counting objects: 100% (360/360), done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 46571 (delta 254), reused 0 (delta 0), pack-reused 46211
接收对象中: 100% (46571/46571), 22.03 MiB | 2.45 MiB/s, 完成.
处理 delta 中: 100% (34888/34888), 完成.
检查连接... 完成。
warning: 远程 HEAD 指向一个不存在的引用,无法检出。

larry@larry-VirtualBox:~/opt$ git show-ref
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
larry@larry-VirtualBox:~/opt$ cd ~
larry@larry-VirtualBox:~$ git show-ref
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
larry@larry-VirtualBox:~$ cd opt/depot_tools/
larry@larry-VirtualBox:~/opt/depot_tools$ git show-ref
57ed3aedaef3e9eabf9d8ea19f99ebbe8925b7be refs/remotes/origin/chromium.org/chrome/3865
9c96f7437ed546a93ba8b405d47265e50f1ca31c refs/remotes/origin/chromium.org/chrome/3904
5316f2b377a2c66279abaf35bc3f5971e4852ee4 refs/remotes/origin/chromium.org/chrome/3987
af45aa86aced54e87d3a5f061b504fd486694a27 refs/remotes/origin/chromium.org/chrome/4147
0b92d49c8c3e90e988288a63ea11dc2860387845 refs/remotes/origin/chromium.org/infra/config
f35d3508ebd8c98d6c3b6ebfebe4895b374dbc07 refs/remotes/origin/chromium.org/main
a6baf70a45b04731ed99f47a0fbfcb5f28a1f03e refs/remotes/origin/chromium.org/master
larry@larry-VirtualBox:~/opt/depot_tools$ git branch
larry@larry-VirtualBox:~/opt/depot_tools$ git branch -a
  remotes/origin/chromium.org/chrome/3865
  remotes/origin/chromium.org/chrome/3904
  remotes/origin/chromium.org/chrome/3987
  remotes/origin/chromium.org/chrome/4147
  remotes/origin/chromium.org/infra/config
  remotes/origin/chromium.org/main
  remotes/origin/chromium.org/master
larry@larry-VirtualBox:~/opt/depot_tools$ git checkout remotes/origin/chromium.org/chrome/3865
Note: checking out 'remotes/origin/chromium.org/chrome/3865'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD 目前位于 57ed3ae... Run git_cl commands as a python step.
larry@larry-VirtualBox:~/opt/depot_tools$ ll
总用量 3124
drwxrwxr-x 15 larry larry  12288 927 18:13 ./
drwxrwxrwx  7 larry larry   4096 927 17:40 ../
-rwxrwxr-x  1 larry larry   2523 927 18:13 annotated_gclient.py*
-rw-rw-r--  1 larry larry    685 927 18:13 appengine_mapper.py
-rw-rw-r--  1 larry larry  31505 927 18:13 auth.py
-rwxrwxr-x  1 larry larry   1140 927 18:13 autoninja*
-rwxrwxr-x  1 larry larry   1464 927 18:13 autoninja.bat*
-rwxrwxr-x  1 larry larry   5202 927 18:13 autoninja.py*
-rwxrwxr-x  1 larry larry    320 927 18:13 bb*
-rw-rw-r--  1 larry larry    247 927 18:13 bb.bat
drwxrwxr-x  3 larry larry   4096 927 18:13 bootstrap/
-rw-rw-r--  1 larry larry    485 927 18:13 breakpad.py
-rwxrwxr-x  1 larry larry   4615 927 18:13 buildbucket.py*
lrwxrwxrwx  1 larry larry     24 927 18:13 cbuildbot -> support/chromite_wrapper*
-rw-rw-r--  1 larry larry  15128 927 18:13 checkout.py
lrwxrwxrwx  1 larry larry     24 927 18:13 chrome_set_ver -> support/chromite_wrapper*
-rwxrwxr-x  1 larry larry   6589 927 18:13 cipd*
-rw-rw-r--  1 larry larry   1803 927 18:13 cipd.bat
-rw-rw-r--  1 larry larry    288 927 18:13 cipd_bin_setup.bat
-rw-rw-r--  1 larry larry    611 927 18:13 cipd_bin_setup.sh
-rw-rw-r--  1 larry larry     54 927 18:13 cipd_client_version
-rw-rw-r--  1 larry larry   1424 927 18:13 cipd_client_version.digests
-rw-rw-r--  1 larry larry   1823 927 18:13 cipd_manifest.txt
-rw-rw-r--  1 larry larry  10811 927 18:13 cipd_manifest.versions
-rw-rw-r--  1 larry larry   4010 927 18:13 cipd.ps1
-rwxrwxr-x  1 larry larry    275 927 18:13 cit*
-rwxrwxr-x  1 larry larry    410 927 18:13 cit.bat*
-rwxrwxr-x  1 larry larry   5071 927 18:13 cit.py*
-rwxrwxr-x  1 larry larry    280 927 18:13 clang-format*
-rw-rw-r--  1 larry larry    415 927 18:13 clang-format.bat
-rwxrwxr-x  1 larry larry    293 927 18:13 clang_format_merge_driver*
-rwxrwxr-x  1 larry larry    428 927 18:13 clang_format_merge_driver.bat*
-rwxrwxr-x  1 larry larry   2457 927 18:13 clang_format_merge_driver.py*
-rwxrwxr-x  1 larry larry   2657 927 18:13 clang_format.py*
-rw-rw-r--  1 larry larry    265 927 18:13 codereview.settings
-rwxrwxr-x  1 larry larry    298 927 18:13 compile_single_file*
-rw-rw-r--  1 larry larry    394 927 18:13 compile_single_file.bat
-rw-rw-r--  1 larry larry   2732 927 18:13 compile_single_file.py
-rw-rw-r--  1 larry larry    390 927 18:13 cpplint.bat
-rwxrwxr-x  1 larry larry   2394 927 18:13 cpplint_chromium.py*
-rwxrwxr-x  1 larry larry 235011 927 18:13 cpplint.py*
lrwxrwxrwx  1 larry larry     24 927 18:13 cros -> support/chromite_wrapper*
-rw-rw-r--  1 larry larry    145 927 18:13 CROS_OWNERS
lrwxrwxrwx  1 larry larry     24 927 18:13 cros_sdk -> support/chromite_wrapper*
-rwxrwxr-x  1 larry larry   1880 927 18:13 dart_format.py*
-rwxrwxr-x  1 larry larry    284 927 18:13 depot-tools-auth*
-rw-rw-r--  1 larry larry    419 927 18:13 depot-tools-auth.bat
-rwxrwxr-x  1 larry larry   3322 927 18:13 depot-tools-auth.py*
-rwxrwxr-x  1 larry larry   1702 927 18:13 detect_host_arch.py*
-rwxrwxr-x  1 larry larry    300 927 18:13 download_from_google_storage*
-rwxrwxr-x  1 larry larry    435 927 18:13 download_from_google_storage.bat*
-rwxrwxr-x  1 larry larry  23640 927 18:13 download_from_google_storage.py*
-rwxrwxr-x  1 larry larry   1176 927 18:13 ensure_bootstrap*
-rwxrwxr-x  1 larry larry    277 927 18:13 fetch*
-rwxrwxr-x  1 larry larry    531 927 18:13 fetch.bat*
drwxrwxr-x  2 larry larry   4096 927 18:13 fetch_configs/
-rwxrwxr-x  1 larry larry  10266 927 18:13 fetch.py*
-rw-rw-r--  1 larry larry  11974 927 18:13 fix_encoding.py
-rwxrwxr-x  1 larry larry    524 927 18:13 gclient*
-rwxrwxr-x  1 larry larry    534 927 18:13 gclient.bat*
-rwxrwxr-x  1 larry larry   2322 927 18:13 gclient_completion.sh*
-rw-rw-r--  1 larry larry  32231 927 18:13 gclient_eval.py
-rwxrwxr-x  1 larry larry   4179 927 18:13 gclient-new-workdir.py*
-rw-rw-r--  1 larry larry   5050 927 18:13 gclient_paths.py
-rwxrwxr-x  1 larry larry 119334 927 18:13 gclient.py*
-rw-rw-r--  1 larry larry  61964 927 18:13 gclient_scm.py
-rw-rw-r--  1 larry larry  39390 927 18:13 gclient_utils.py
-rwxrwxr-x  1 larry larry   4643 927 18:13 gerrit_client.py*
-rw-rw-r--  1 larry larry  36010 927 18:13 gerrit_util.py
drwxrwxr-x  8 larry larry   4096 927 18:13 .git/
-rw-rw-r--  1 larry larry   1548 927 18:13 .gitattributes
-rwxrwxr-x  1 larry larry    213 927 18:13 git-cache*
-rwxrwxr-x  1 larry larry  30889 927 18:13 git_cache.py*
-rwxrwxr-x  1 larry larry    217 927 18:13 git-cl*
-rwxrwxr-x  1 larry larry    962 927 18:13 git_cl_completion.sh*
-rwxrwxr-x  1 larry larry 220551 927 18:13 git_cl.py*
-rw-rw-r--  1 larry larry  30073 927 18:13 git_common.py
-rwxrwxr-x  1 larry larry   1730 927 18:13 git-crrev-parse*
-rw-rw-r--  1 larry larry   1800 927 18:13 git_dates.py
-rwxrwxr-x  1 larry larry    213 927 18:13 git-drover*
-rwxrwxr-x  1 larry larry  15533 927 18:13 git_drover.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-find-releases*
-rwxrwxr-x  1 larry larry   1956 927 18:13 git_find_releases.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-footers*
-rwxrwxr-x  1 larry larry   8451 927 18:13 git_footers.py*
-rwxrwxr-x  1 larry larry    254 927 18:13 git-freeze*
-rwxrwxr-x  1 larry larry    871 927 18:13 git_freezer.py*
-rwxrwxr-x  1 larry larry    529 927 18:13 git-gs*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-hyper-blame*
-rwxrwxr-x  1 larry larry  12771 927 18:13 git_hyper_blame.py*
-rw-rw-r--  1 larry larry   1674 927 18:13 .gitignore
-rwxrwxr-x  1 larry larry    223 927 18:13 git-map*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-map-branches*
-rwxrwxr-x  1 larry larry  11323 927 18:13 git_map_branches.py*
-rwxrwxr-x  1 larry larry   4357 927 18:13 git_map.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-mark-merge-base*
-rwxrwxr-x  1 larry larry   2059 927 18:13 git_mark_merge_base.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-nav-downstream*
-rwxrwxr-x  1 larry larry   1935 927 18:13 git_nav_downstream.py*
-rwxrwxr-x  1 larry larry    236 927 18:13 git-nav-upstream*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-new-branch*
-rwxrwxr-x  1 larry larry   2837 927 18:13 git_new_branch.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-number*
-rwxrwxr-x  1 larry larry   9308 927 18:13 git_number.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-rebase-update*
-rwxrwxr-x  1 larry larry  12176 927 18:13 git_rebase_update.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-rename-branch*
-rwxrwxr-x  1 larry larry   1639 927 18:13 git_rename_branch.py*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-reparent-branch*
-rwxrwxr-x  1 larry larry   3229 927 18:13 git_reparent_branch.py*
-rwxrwxr-x  1 larry larry    251 927 18:13 git-retry*
-rwxrwxr-x  1 larry larry   5795 927 18:13 git_retry.py*
-rwxrwxr-x  1 larry larry    610 927 18:13 git-runhooks*
-rwxrwxr-x  1 larry larry    213 927 18:13 git-squash-branch*
-rwxrwxr-x  1 larry larry    748 927 18:13 git_squash_branch.py*
drwxrwxr-x  4 larry larry   4096 927 18:13 git-templates/
-rwxrwxr-x  1 larry larry    502 927 18:13 git-thaw*
-rwxrwxr-x  1 larry larry    304 927 18:13 git-upstream-diff*
-rwxrwxr-x  1 larry larry   2044 927 18:13 git_upstream_diff.py*
-rwxrwxr-x  1 larry larry    270 927 18:13 gn*
-rw-rw-r--  1 larry larry    405 927 18:13 gn.bat
-rwxrwxr-x  1 larry larry   2991 927 18:13 gn.py*
-rwxrwxr-x  1 larry larry   5569 927 18:13 gsutil.py*
-rwxrwxr-x  1 larry larry    532 927 18:13 gsutil.py.bat*
-rw-rw-r--  1 larry larry   2477 927 18:13 gsutil.vpython
drwxrwxr-x  3 larry larry   4096 927 18:13 infra/
-rwxrwxr-x  1 larry larry    321 927 18:13 led*
-rw-rw-r--  1 larry larry    255 927 18:13 led.bat
-rw-rw-r--  1 larry larry   1563 927 18:13 LICENSE
-rwxrwxr-x  1 larry larry    328 927 18:13 luci-auth*
-rw-rw-r--  1 larry larry    255 927 18:13 luci-auth.bat
-rwxrwxr-x  1 larry larry    325 927 18:13 lucicfg*
-rw-rw-r--  1 larry larry    259 927 18:13 lucicfg.bat
-rwxrwxr-x  1 larry larry    331 927 18:13 mac_toolchain*
drwxrwxr-x  6 larry larry   4096 927 18:13 man/
-rw-rw-r--  1 larry larry   9429 927 18:13 metrics.py
-rw-rw-r--  1 larry larry   4359 927 18:13 metrics.README.md
-rw-rw-r--  1 larry larry   8811 927 18:13 metrics_utils.py
-rwxrwxr-x  1 larry larry  33387 927 18:13 my_activity.py*
-rwxrwxr-x  1 larry larry   1240 927 18:13 ninja*
-rwxrwxr-x  1 larry larry 504320 927 18:13 ninja.exe*
-rwxrwxr-x  1 larry larry 161640 927 18:13 ninja-linux32*
-rwxrwxr-x  1 larry larry 183344 927 18:13 ninja-linux64*
-rw-rw-r--  1 larry larry   1928 927 18:13 ninjalog.README.md
-rwxrwxr-x  1 larry larry   6957 927 18:13 ninjalog_uploader.py*
-rwxrwxr-x  1 larry larry   3240 927 18:13 ninjalog_uploader_wrapper.py*
-rwxrwxr-x  1 larry larry 184804 927 18:13 ninja-mac*
-rw-rw-r--  1 larry larry    547 927 18:13 OWNERS
-rw-rw-r--  1 larry larry  12372 927 18:13 owners_finder.py
-rw-rw-r--  1 larry larry  22092 927 18:13 owners.py
-rw-rw-r--  1 larry larry  18113 927 18:13 patch.py
-rw-rw-r--  1 larry larry  14077 927 18:13 post_build_ninja_summary.py
-rw-rw-r--  1 larry larry  54760 927 18:13 presubmit_canned_checks.py
-rw-rw-r--  1 larry larry   4745 927 18:13 PRESUBMIT.py
-rwxrwxr-x  1 larry larry  61951 927 18:13 presubmit_support.py*
-rw-rw-r--  1 larry larry    282 927 18:13 profile.xml
-rwxrwxr-x  1 larry larry    323 927 18:13 prpc*
-rw-rw-r--  1 larry larry    250 927 18:13 prpc.bat
-rwxrwxr-x  1 larry larry    623 927 18:13 pylint*
-rwxrwxr-x  1 larry larry    941 927 18:13 pylint.py*
-rw-rw-r--  1 larry larry   9094 927 18:13 pylintrc
-rwxrwxr-x  1 larry larry   1922 927 18:13 python_runner.sh*
-rw-rw-r--  1 larry larry   3579 927 18:13 README.gclient.md
-rw-rw-r--  1 larry larry   4969 927 18:13 README.git-cl.md
-rw-rw-r--  1 larry larry   2839 927 18:13 README.md
drwxrwxr-x  4 larry larry   4096 927 18:13 recipes/
-rwxrwxr-x  1 larry larry  36090 927 18:13 repo*
-rwxrwxr-x  1 larry larry    280 927 18:13 roll-dep*
-rwxrwxr-x  1 larry larry    415 927 18:13 roll-dep.bat*
-rwxrwxr-x  1 larry larry  10063 927 18:13 roll_dep.py*
-rwxrwxr-x  1 larry larry    284 927 18:13 roll-dep-svn*
-rwxrwxr-x  1 larry larry    419 927 18:13 roll-dep-svn.bat*
-rwxrwxr-x  1 larry larry  15685 927 18:13 roll_dep_svn.py*
-rw-rw-r--  1 larry larry  13595 927 18:13 scm.py
-rw-rw-r--  1 larry larry   3662 927 18:13 setup_color.py
-rw-rw-r--  1 larry larry   9194 927 18:13 split_cl.py
-rw-rw-r--  1 larry larry     34 927 18:13 .style.yapf
-rw-rw-r--  1 larry larry   9011 927 18:13 subcommand.py
-rw-rw-r--  1 larry larry  15589 927 18:13 subprocess2.py
drwxrwxr-x  2 larry larry   4096 927 18:13 support/
drwxrwxr-x  2 larry larry   4096 927 18:13 testing_support/
drwxrwxr-x  3 larry larry   4096 927 18:13 tests/
drwxrwxr-x 13 larry larry   4096 927 18:13 third_party/
-rwxrwxr-x  1 larry larry   3493 927 18:13 update_depot_tools*
-rw-rw-r--  1 larry larry   1906 927 18:13 update_depot_tools.bat
-rw-rw-r--  1 larry larry   1112 927 18:13 update_depot_tools_toggle.py
-rw-rw-r--  1 larry larry    604 927 18:13 upload_metrics.py
-rwxrwxr-x  1 larry larry  10666 927 18:13 upload_to_google_storage.py*
-rwxrwxr-x  1 larry larry   1009 927 18:13 vpython*
-rw-rw-r--  1 larry larry    146 927 18:13 .vpython
-rw-rw-r--  1 larry larry    259 927 18:13 vpython.bat
-rwxrwxr-x  1 larry larry   4378 927 18:13 watchlists.py*
-rwxrwxr-x  1 larry larry   1621 927 18:13 weekly*
drwxrwxr-x  2 larry larry   4096 927 18:13 win_toolchain/
-rwxrwxr-x  1 larry larry   2151 927 18:13 wtf*
-rwxrwxr-x  1 larry larry    274 927 18:13 yapf*
-rwxrwxr-x  1 larry larry    409 927 18:13 yapf.bat*
drwxrwxr-x  2 larry larry   4096 927 18:13 zsh-goodies/
larry@larry-VirtualBox:~/opt/depot_tools$ git checkout -b remotes/origin/chromium.org/chrome/3865
切换到一个新分支 'remotes/origin/chromium.org/chrome/3865'
larry@larry-VirtualBox:~/opt/depot_tools$ git branch -m remotes/origin/chromium.org/chrome/3865 master
larry@larry-VirtualBox:~/opt/depot_tools$ git show-ref
57ed3aedaef3e9eabf9d8ea19f99ebbe8925b7be refs/heads/master
57ed3aedaef3e9eabf9d8ea19f99ebbe8925b7be refs/remotes/origin/chromium.org/chrome/3865
9c96f7437ed546a93ba8b405d47265e50f1ca31c refs/remotes/origin/chromium.org/chrome/3904
5316f2b377a2c66279abaf35bc3f5971e4852ee4 refs/remotes/origin/chromium.org/chrome/3987
af45aa86aced54e87d3a5f061b504fd486694a27 refs/remotes/origin/chromium.org/chrome/4147
0b92d49c8c3e90e988288a63ea11dc2860387845 refs/remotes/origin/chromium.org/infra/config
f35d3508ebd8c98d6c3b6ebfebe4895b374dbc07 refs/remotes/origin/chromium.org/main
a6baf70a45b04731ed99f47a0fbfcb5f28a1f03e refs/remotes/origin/chromium.org/master
larry@larry-VirtualBox:~/opt/depot_tools$ 


问题3:获取chromium源码

larry@larry-VirtualBox:~$ cd opt/
larry@larry-VirtualBox:~/opt$ git clone https://source.codeaurora.org/quic/lc/chromium
正克隆到 'chromium'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1499019 (delta 0), reused 0 (delta 0), pack-reused 1499018
接收对象中: 100% (1499019/1499019), 1.45 GiB | 650.00 KiB/s, 完成.
处理 delta 中: 100% (1185429/1185429), 完成.
检查连接... 完成。
warning: 远程 HEAD 指向一个不存在的引用,无法检出。

larry@larry-VirtualBox:~/opt$ cd chromium/
larry@larry-VirtualBox:~/opt/chromium$ git show-ref
07ca5b139b967f62b03f08fca5d6f37a373ed20f refs/remotes/origin/chromium.org/trunk
larry@larry-VirtualBox:~/opt/chromium$ git branch
larry@larry-VirtualBox:~/opt/chromium$ git branch -a
  remotes/origin/chromium.org/trunk
larry@larry-VirtualBox:~/opt/chromium$ git checkout remotes/origin/chromium.org/trunk
正在检出文件: 100% (43165/43165), 完成.
Note: checking out 'remotes/origin/chromium.org/trunk'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD 目前位于 07ca5b1... tcmalloc: fixed config_linux.h to build for arm targets.
larry@larry-VirtualBox:~/opt/chromium$ git checkout -b remotes/origin/chromium.org/trunk
切换到一个新分支 'remotes/origin/chromium.org/trunk'
larry@larry-VirtualBox:~/opt/chromium$ git branch -m remotes/origin/chromium.org/trunk master
larry@larry-VirtualBox:~/opt/chromium$ git show-ref
07ca5b139b967f62b03f08fca5d6f37a373ed20f refs/heads/master
07ca5b139b967f62b03f08fca5d6f37a373ed20f refs/remotes/origin/chromium.org/trunk
larry@larry-VirtualBox:~/opt/chromium$ 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值