REVIEWBOARD 使用说明和强制review的配置方法

SVN+Reviewboard+rbtools在Windows环境下的配置指南 BUG 1: rbt使用的python2.7。python2.7在中文windows环境下有一个大bug! subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, 阅读详情

去年末才第一次接触的reviewboard系统,开源的代码审核,方便,快捷,当然也存在诸多开源软件的潜在bug多、说明文档不细致等特点,部署在公司的服务器上后,运行了近一年的时间,还算平稳高效,最近闲下来吧当初写给公司同事的rb系统使用说明和配置强制review的方法整理了一下发出来,希望能帮助到其他用户。

一、 工作流程

  1. 在本地代码做出一个修改。
  2. 为你新做的修改创建一个评审请求。
  3. 发布评审请求。
  4. 等到评审者的反馈。
  5. 评审没有问题,则在log-message中写清reviewID并提交变更至配置库,并且切换评审单状态为“submitted”。
  6. 评审有问题的,修改程序,需要重新更新DIFF文件(如果有),重新进行评审。

二、手动发起请求(推荐使用自动rbtools方式)

  1. 修改文件后,使用tortoise工具生成一个diff文件,方法是在文件或文件夹上右键点击选择TortoiseSVN-> Create Patch。
  2. 登陆系统,点击导航栏New Review Request,发起新的申请。
  3. 点击左侧你要上传的文件对应的svn库,点击右侧select上传你生成的diff文件。
  4. 复制或输入你修改的文件相对于svn库根目录的路径。
  5. 输入各项信息:
    Summary(必填):标题、总结,显示在review申请的题目上。
    Description(必填): 描述。
    右侧:
    Reviewers(必填):审核人,在people处点击,手动输入审核人的姓名或者用户名都可以,系统会在输入时自动搜索并显示提示。如果是提交给某一个组来审核,就在Groups点击进行指定,二者至少填写一项。
    Bug:本处填写bugZilla上的bug号。之后通过单击本数字可直接跳转该bug页。
  6. 最后可以查看request导航栏的最右侧的Diff,查看diff文件是否正常显示,如果所有配置项没有问题了,点击Publish发布这个请求,你的评审人会收到指定邮件,你的评审人评审后你也会收到评审邮件,针对问题你可以进行修改,如果需要重新上传新的diff文件,请进入到该申请中,在request导航栏第二项Update处点击Update Diff来更新diff文件或者提交新的文件,比如截图之类的。
  7. 评审通过后,问题发起人应及时关闭问题,方式是在request导航栏第一项中点击close->submitted,手动关闭这个问题。
    三、使用rbtools自动发起请求(推荐)
  8. 安装python,安装结束后配置如下两个环境变量到系统path中,运行命令行命令“python”验证是否安装成功。(记得加分号)
C:\Python27
C:\Python27\Scripts
  1. 运行命令行命令pip install rbtools,安装rbtools工具,成功后输入命令“rbt”验证是否安装成功。
  2. 安装diffutil,安装后添加如下环境变量到系统path中。
C:\Program Files (x86)\GnuWin32\bin
  1. 命令行输入rbt可以查看到rbt的所有命令,常用的几个如下:
    post 自动上传diff文件并创建review申请
    setup-repo 配置rbt工具的基本参数
    --publish(-p) 创建一个直接发布的申请(记得加上,否则作为draft草稿状态除了发起人,谁都看不到这个申请)
    --summary= 综述,类似于题目
    --description= 详细描述
    --target-groups= 指定为你review代码的组
    --target-people= 指定为你review代码的用户
    --username= 指定你的reviewboard用户名
    --password= 指定你的reviewboard密码
    --bugs-closed= 你所修改对应的bugzilla上的bug ID号“,如果已经配置好了rb系统和bugzilla的链接,执行此命令后的review request 会在右侧的bug一栏自动填上该ID号,页面中点击该ID号会自动跳转到bugzilla对应的bug页面。
    -r= 你想要更新的reviewID号,对指定编号的申请进行修改,默认是更新diff文件,也可以更改其他配置,这样不会产生新的申请,而会在你指定的申请中upload新的diff文件,在浏览diff文件的时候可以拖动滚动轴切换不同版本的diff文件。
    -o 上传后直接打开浏览器到该request
    -I= 对指定文件发起申请,“=”后填写路径,该路径是对于执行命令行的相对路径。如果要指定的是文件夹,那么可以使用-I=path/to/yours/*,即加通配符的方式自动包含指定路径下的所有更改文件,如果已经使用-I指定了一些目录后,还想包含当前命令行所在目录的文件,可以使用-I=。
    -X=是指定类型文件,比如txt文件,则-X=/'*.txt。
  2. 将.reviewboardrc文件复制到你所维护的代码的根目录,比如你维护的代码都在h5里面,就可以把这个文件放在h5文件夹下。打开该文件,修改第一个为reviewboard地址,第二个是svn代码库地址,后两个是你的用户名密码。
  3. 具体实例:
    6.1 修改文件后打开该目录的命令行工具,例如我想要直接发布这个申请,并且不想登陆到网站再写描述内容和指定人,我希望直接一句代码搞定这一系列操作,包括指定review人,实例rbt post -p --summary=“my test” --description=“just for test” --target-people=manager 对指定ID的申请进行更新diff文件。即我更新了代码,应提交新的diff文件到原申请上。提交后点击申请的diff,切换到diff界面,会在diff文件预览区之上显示版本比对切换按钮:
    rbt post -p -r=“之前的reviewID”(如果你需要更新的不是代码,而是review人或者summary或者description等信息,也可以使用这个命令更新申请).
    6.3 对指定文件进行发起申请(本例假设我在h5文件夹下执行命令行,要对h5文件夹下的a.json和app文件夹下的a.js发起申rbt post -p --summary=“my test” --description=“just for test” --target-people=manager -I=a.json -I=a.js
    提交成功的表现是返回一个提交成功的reviewID和两个自动生成的服务器端文件路径的地址。
  4. 打开reviewboard网站可查看自己提交的结果。
  5. 常见问题。
问题描述1:GNU diff is required in order to generate diffs. Make sure it is installed and in the path。

答:diffutil没有安装或者没有配置环境变量。

问题描述2: 'ascii' codec can't decode byte 0xc* in position *。

答:python解码语言是ascii,但是我们希望是utf-8。
解决方案,打开C:\Python27\Lib\site-packages,创建新文件,名为sitecustomize.py,把下面两行代码粘贴进去保存退出。

import sys
reload(sys) 
sys.setdefaultencoding('utf-8')

之后打开cmd,执行命令“python”,启动python解释器,然后依次输入下面代码:

import sys
sys.getdefaultencoding()

如果输出是utf-8则ok,否则,直接在命令行把上面的3句命令执行下,然后再执行上一句的get,查看输出结果。

问题3:ERROR: The current directory does not contain a checkout from a supported source code repository.

rbt post时,常见的不成功的错误,reviewboardrc文件所在位置不在库内,或者该文件里面的库地址有误,请检验是否正确。

问题4:CRITICAL: Could not parse specified revisions:

一般都是某个命令段内有空格且没有双引号造成的。请检查命令行,补全双引号或者修改命令格式。

问题5:

One or more files in your changeset has history scheduled with commit. Please tr
y again with '--svn-show-copies-as-adds=y/n'.

四、关于强制review方式下的svn提交流程

当本功能激活的状态下,强制review的流程如下:
1. 更新代码后必须先发起review申请。
2. 申请通过后(至少有一个审核人ship it通过),才可以发起提交代码申请,并且在log message上第一行行首按照格式注明你所通过的reviewID,格式是review:ID号
3.脚本自动在reviewboard系统中搜索该ID,如果该ID通过审核则放行代码通过,否则则被拒绝。
关于这种提交方式你必须注意:一个reviewID只能使用一次,所以你必须保证审核时的文件就是你提交代码时的那些文件,一旦上传成功,该ID无法再次使用,如果发生遗漏这种情况,你只能重新发起申请。
如果提交过程中出错,比如提示没有reviewID,则代表log message没有填写reviewID或者格式错误,请使用正确的格式:“review:你的申请ID”。
五、review过程需要说明的几点
1. 配置reviewboardrc
配置时第一个不用修改,就是reviewboard系统的地址,第二个库地址是svn库的http访问方式的地址,第三项第四项的账户名就是reviewboard的账户名和密码。Reviewboard的post过程实际上是通过大家的这个系统账户自动登录到第一个路径对应的reviewboard系统,然后通过后台搜索和你第二项路径一样的已经配置好的svn库的账号密码来调取相关文件,经过系统自动对比生成diff文件,然后根据你在rbt过程中的各项参数标志来创建request。
本文件在文件夹中有,但是只写了四条信息,其余信息可以自行扩展,详情请参阅rbtools说明文档。
3. Rbt命令行
每个命令内部不要有空格,如果要有空格就是用双引号包起来,指定review人或者组时“=”后面不要有引号,直接写指定人账号名/姓/名即可,如果指定多人可以用双引号包起来。
4. Request步骤图示
A. 发布请求后,如果是手动的提交,请完善各项信息并publish。
B. Review人会收到邮件通知,请及时点击链接进行review。您可以通过request的导航栏的最后一项Diff来查看diff文件,并点击Diff文件的左侧代码行来添加comment。添加后点击顶部的绿色提示栏的Publish来发布。
C. request发起人会收到comment提示,登陆该request后,可以看到该comment,并可参看Diff文件或者直接Reply该comment,reply过程中除了可以写文字之外,可以选择Fixed还是Drop,前者表示Reply的时候我已经修复了该问题。
D. 上一点需要注意的是,如果diff文件更新了,需要上传的记得更新diff文件或者添加新文件。(此处支持通过Add File 上传图片的!)
E. reply后,review人会收到邮件提醒,这时候进入该request,可以继续进行comment,如果没有问题了,就可以把这个request通过,在rb系统中,通过是用ship it!来表示,review人可以点击request导航栏上的Ship it!来通过这个申请。
F. 通过之后,发起人收到邮件通知后应直接将该问题关闭,即更改close状态为submitted。
5. 界面订制
在request列表中,用户随时可以通过右侧的铅笔图标 来订制显示的类别,常用的有requestID、summary、submitter、lastUpdated等等。每一个request对应唯一的一个ID,所以我们可以通过其ID来搜索到该问题。
6. request状态解释
Draft:草稿,没有publish的申请,不作为正式申请对待,请完成步骤必须publish,否则除了你自己谁也看不到这个request。
Pending Review:已经发布的申请,正在等待审核。(ship it但未submitted的申请也包括在内)
Submitted:已解决的申请,是完整申请的最后的状态。
Discarded:丢弃,不继续走review流程。
Muted:静音,没有丢弃,但是不给相关人更新任何状态,类似休眠。
Archive: 存档,如果不想看见的申请,在submitted或者discarded后者muted之后,选中该申请的checkBox后,点击Archive,就可以将其存档。在dashboard中选择hide Archived就可以隐藏该申请。
7. 代码评审前不要提交新做的功能源程序,因为差异文件是基于配置库svn中版本来产生的,提交后再生成差异文件,也就没有差异了。除非重新改个文件名,当成一个新文件来产生差异。
8. 任何不是request指定review人的请不要在该request相关人不知情的情况下私自ship it来通过评审。

五,强制review的配置方法

当初部署强制review的时候,搜了很多的文档,后来找到了这位python大神的文章,基本按照他写的方法进行的配置,对该方法重复的部分就不赘述了。

赖勇浩的博客链接地址

基于mediapipe的动作捕捉和人物模型的驱动 我实习做这个的时候,当时也找了很多资料,但很多资料都没有讲透,下面我就总结一下自己结合看代码后的感悟,还有一些我认为很重要的点。 阅读详情

相关推荐

Qt+PCL实战:如何用QVTKOpenGLNativeWidget高效渲染3D点云(附完整代码)

本文深入解析了Qt与PCL结合使用QVTKOpenGLNativeWidget进行高效3D点云渲染的实战技术。通过对比传统QVTKWidget,详细介绍了QVTKOpenGLNativeWidget在渲染效率、内存占用和兼容性方面的显著优势,并提供了完整的代码示例和性能优化策略,助力开发者在工业检测、自动驾驶等领域实现更高效的点云可视化。

keras9composer的博客 687

review board 使用

1 流程 2 生成new review request 在本地使用svn commit之后,打开http://IP:PORT。 登录自己的账户。 点击左上角的new review request,可以看到网页上出现svn提交记录。如果在2区域中没有需要的记录,则选择3区域,查看有没有匹配的修改文件记录。 选择对应的提交记录,点击create review request...

tj的专栏 7075

基于大模型的癫痫手术预测与决策系统技术方案文档

基于大模型的癫痫手术预测与决策系统技术方案文档

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 977

【亲测免费】 开源代码审查工具 Review Board 安装配置完全指南

Review Board 是一款基于Web的协作式代码审查工具,遵循MIT开源许可协议。自2006年起开发,旨在填补市场上的代码审查空白,提供一个灵活适应多种工作流程且简化审查过程的开源解决方案。适用于从小型初创公司到大型企业的各种规模的组织,帮助维持高质量代码并减少bug。它支持多种版本控制系统,如Git、Mercurial、SVN等,并提供丰富的API和扩展框架。 **主要编程语言:** -...

gitblog_07991的博客 1622

从像素到光影:解析《黑神话:悟空》中Nanite与Lumen的协同渲染革命

本文深度解析了《黑神话:悟空》如何利用Unreal Engine 5的Nanite与Lumen技术实现渲染革命。Nanite处理亿级多边形几何细节,无需传统LOD优化;Lumen提供全动态全局光照,实现实时光线反弹。两者协同工作,为游戏带来电影级视觉体验,重塑了实时渲染的技术标准与工作流程。

f6g7h8i9j的博客 425

Advanced Installer打包避坑指南:如何正确配置64位系统下的Java环境与注册表条件(以15.7版本为例)

本文详细解析了使用Advanced Installer 15.7版本在64位系统下打包Java应用时的常见问题与解决方案。重点介绍了注册表重定向机制、Java环境检测的双保险策略、环境变量设置的隐藏坑以及权限管理的进阶技巧,帮助开发者避免安装包在用户机器上无法运行的幽灵问题。

weixin_28676289的博客 323

如何使用Reviewboard进行代码Review?

https://www.fgba.net/sitemap.xml

ludongguoa的博客 1289

Serial RapidIO Gen2 IP 说明(三)

前言 继续接着上篇文章,介绍Serial RapidIO Gen2 IP 的具体端口信息。 一、端口描述 1、缓冲设计接口 2、物理层接口 参考说明 【1】Serial RapidIO Gen2 v4.1https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/srio_gen2/v4_1/pg007_srio_gen2.pdf ...

记录所学,分享知识,结识挚友 1321

【亲测免费】 ReviewBoard: 功能强大的代码审查工具

![](https://www.reviewboard.org/images/logo.png) ## 项目简介 是一个开源的代码审查工具,它为开发团队提供了一个简单易用的平台来进行代码审查和版本控制。通过 ReviewBoard,你可以轻松地查看、讨论和批准代码更改,并且可以与各种版本控制系统(如 Git、Subversion 和 Mercurial 等)无缝集成。 ## ReviewB...

gitblog_00009的博客 1426

杰理可视化SDK开发-杰理AC1123N芯片SDK开发笔记合集

该文档主要描述 AC112N开发相关的使用说明和注意事项,收集并持续更新开发调试过程中的相关疑问和解答,对SDK介绍文档做一个补充说明。写作人:李永奉,参考项目MD-026H; AC112N-SDK项目帮助文档在杰理开发者平台(JL DP)'帮助'处进入,如本文档有与后续帮助文档或工具注释说明冲突,以后者为标准。

李永奉的博客 181

软考中级-软件设计师 知识点整理(一篇就过了 建议收藏)

软考中级-软件设计师上午题知识点总结

片言可决讼,半纸能缚龙 17万+

Tao-ReviewBoard V1.0.0使用手册 1

Tao-ReviewBoard V1.0.0使用手册 1 (C)2010-2011AlibabaGroupHoldingLimited. Tao-ReviewBoard...

335

OData 请求里的 Nextlink 实战:在 ABAP Client Proxy 中优雅处理长列表分页

本文介绍了OData v4标准中的@odata.nextLink分页机制及其在SAP ABAP中的实践应用。重点解析了该机制通过服务端提供的完整URL实现分页获取,客户端只需循环处理直到该字段消失的特点。文章提供了清晰的ABAP代码模板,展示如何通过Remote Client Proxy实现分页数据获取,并强调了仅支持OData v4和远程消费的限制条件。通过HR员工数据聚合的实际案例,说明了流式分页处理的最佳实践,包括服务端过滤、稳定排序和内存控制等关键技术要点,为ABAP开发者提供了可直接落地的解决方案

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 271

Driver Store Explorer 教程:如何清理 Windows 驱动存储,找回 C 盘空间

C 盘从 60 GB 掉到 20 GB,卸载软件也涨不回来:Windows 驱动存储只进不出,旧驱动全留着。Driver Store Explorer(RAPR)是一款开源清理工具,能把驱动包逐个列出、备份并删除,跟完本文 5 分钟完成第一次清理。 ## 🚀 五步跑通:安装 RAPR 并列出全部驱动包 1. **安装**:在 PowerShell 里运行 `winget install lo

gitblog_00320的博客 460

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

一句「在吗」怎么验证 Agent 指令生效:Codex-X 海鸥3.0破甲模板 7 层拆解

在 Codex-X 的指令模板库里,「海鸥3.0破甲」是 5 套离线内置 Agent 指令之一:它把一个脾气直接、活儿利索的中文技术操作员人格,加上六条专项技能路由和一整套高自主工作流,全部装进同一个 Markdown 文件。装完软件、断网也能启用,省掉的是"每次开新会话都得重新解释一遍需求"的往返成本。 ## 敲一句「在吗」:一个能机械判定的验证开关 场景很简单:刚在 Codex-X 里启用

gitblog_00026的博客 216

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

鸣潮ok-ww完整指南:一键日常+后台自动战斗+刷声骸,挂机三步搞定

每天上线,先清忘却之庭,再刷声骸秘境,回来还要一张张点开 4C 声骸挑词条——重复到手指发麻的事,能不能交给程序?ok-ww 是一款**免费开源的鸣潮自动化工具**,它靠图像识别盯着游戏画面,模拟鼠标键盘替你跑通一键日常、后台自动战斗和声骸批量处理,不读内存、不改文件,窗口最小化也能在后台继续干活。 [![鸣潮ok-ww后台自动战斗界面,实时读取技能冷却与角色战斗状态](https://raw.

gitblog_00667的博客 192

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

一条帖子 740 万浏览之后:不刷机不 ROOT,给智能电视“断舍离“的完整操作指南

去年十月十七号,一位海外网友花了一个下午,把家里那台常年卡顿的小米电视收拾了一遍:25 个预装包被逐一点名"请走",开机广告和推荐行消失,开机直奔流媒体,新首页干净得像苹果电视。这条前后对比贴拿到 **740 万次浏览**,四周之内社区攒出 **170 多个机型**的清理清单、覆盖 **200 多位贡献者**。这个项目叫 **CleanYourTV**,它做的事情一句话能说完:通过 Wi-Fi 远

gitblog_00411的博客 894

读懂OptiScaler核心思路:用Inputs与Outputs三步替换游戏自带超采样器

OptiScaler 是一款免费的超采样替换工具,它能"劫持"游戏自带的 DLSS、FSR2、XeSS 等超采样调用,把输出重定向到你自己选定的超采样器上,实现跨显卡、跨技术的画质与性能平衡。本文用最少的代码,带你读懂它的核心设计:**Inputs → OptiScaler → Outputs** 三步替换流程,并指出每一环对应的源码位置。 ## 一、先看结论:一个"中间商"模型 OptiSc

gitblog_01211的博客 522

ContextMenuManager 完整指南:10 分钟搞定 Windows 右键菜单清理

ContextMenuManager 是一款免费的 Windows 右键菜单管理程序,把散落在注册表各处的菜单项集中到一个图形界面里。文件、文件夹、新建、发送到、打开方式、Win+X 等 8 类场景的菜单项,都能直接查看、启用、禁用、改名和换图标,全程不用打开 regedit,操作基本可逆。 [![ContextMenuManager 右键菜单管理主界面:左侧选择场景,右侧管理右键菜单项](ht

gitblog_00345的博客 151

SpotifyX 旧主题突然不生效?降级 1.2.13 + 关闭自动更新的完整教程

SpotifyX 用户升级 Spotify 到 `1.2.47.364` 后,自定义旧版主题不再显示,主页全部变成了统一的新样式。本文把原因讲透,并给出降级回旧界面、关闭自动更新的三步操作和相应风险提醒,帮你把熟悉的布局找回来。 ## 现象自查:旧界面到底还能不能恢复 先确认你遇到的确实是"版本问题",而不是脚本没跑对。可以按下面两点自查: 1. 打开 Spotify,在设置页的"关于"里查

gitblog_00697的博客 207

foobox-cn 7.42 速览:封面取色多了 1-10 可调阈值,Win7 照样能跑

这个 foobar2000 美化套件由 dream7180 维护,本次发布主要改了三块:专辑封面主色采样更准、新增 Windows 7 专用版本、播放列表管理器里的电台重做。老系统用户和喜欢界面配色的朋友都可以看看。 [![7.42 深色模式界面效果](https://raw.gitcode.com/GitHub_Trending/fo/foobox-cn/raw/9b0137109651f53

gitblog_00744的博客 134

艾尔登法环存档迁移与SteamID修改完整指南:快速上手ER-Save-Editor

ER-Save-Editor 是一款开源的艾尔登法环存档编辑工具,支持 PC 与 PlayStation 存档。改 SteamID、调属性、管物品,一次搞定艾尔登法环存档跨设备迁移,让进度跟你的新设备走。 ## 换机、备份、分享,卡在哪了? ⚠️ 三个最常见的情景: - **换机**:新电脑装好游戏,拷来旧存档却提示"存档损坏",进度疑似归零; - **备份**:版本更新前想多留几份存档,复

gitblog_00482的博客 452

把 Windows 旧驱动安全清出来:用 DriverStore Explorer 收回 C 盘空间

DriverStore Explorer(RAPR)是一款开源的 Windows 驱动清理工具。它把 `C:\Windows\System32\DriverStore` 下所有第三方驱动包列成一张清单,让你看出哪些是旧版本、哪些还在被硬件使用,再逐条备份、删除。不用自己翻系统目录,清完的空间直接回到 C 盘。 ## 怎么把它跑起来:装一下,或解压就能用 要求不高:Windows 7 及以上、.

gitblog_00842的博客 290

如何让免费网页版三国杀 noname 在浏览器里从克隆到开局

一张【杀】拍在桌面上,武将的报命声随之响起,回合交给了对面,深夜的牌局还在继续。这不是需要下载安装包的客户端,而是直接跑在浏览器里的网页版三国杀:开源项目 noname(无名杀)把整副牌桌搬进了页面,没有注册、没有付费环节,武将、卡牌、音效全部以仓库文件的形式摊开给你看。 ## 从拿到文件到打完第一局 把游戏弄到手只需一次克隆: ```bash git clone https://gitco

gitblog_00792的博客 1074

Review Board 的使用

二、ReviewBoard  的使用 在前一文中简述了安装过程出现的疑难问题,接下来就是使用过程的问题了。 1)实验以svn作为版本控制工具,安装了官方推荐的post-review工具。 1.1)登录ReviewBoard,配置一个svn 库 如图,点进去后,应该还是很简单的,库地址配置到 trunk 上一级   2)在服务器某个目录,svn co了某个工程trunk代码 3)在...

lydawen的专栏 821

ReviewBoard 系列图文教程之(一)—— 安装

本文测试环境 阿里云 ECS 1 核 1GB(简约型 t1, ecs.t1.small) 领取优惠券 CentOS 7.4 64位 (公共镜像) Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz RAM 1.00 GB

zhichaosong的博客 1万+
上一篇: react-native windows 上配置android
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值