码云主要提供了源代码管理(Git/SVN)功能,最近又推出了高校版让普通老师也能利用起来以供教学使用。
学生与老师不仅能利用其管理代码,更重要的是我们的程序教学能通过对git的使用来引入业界流行的软件开放方式。
经过摸索,大概有几个可以利用的场景。

1.学生代码管理

以前学生在实验室编写好代码带回宿舍,通常使用U盘拷贝或者QQ邮箱的方式。麻烦不说,最关键的是不够专业!。作为计算机专业的学生应该对这种不专业的行为,果断说不。
可以使用码云提供的git服务来管理我们的代码。git最常用的当然是命令行版本,当然对初学者来说还是有一定的难度(很多同学连dircd命令都不知道)。我们一开始作为过渡,可以先使用网页版。

1.1 最简单的入门(创建项目)

步骤很简单,只需3步:

  1. 申请账号。
  2. 新建项目。注意:选择正确类型,比如管理Java项目,尽量选择Java的模板。
  3. 在项目中直接新建、上传、删除文件、文件夹。

进入项目后的大概界面如下:

先熟悉如下功能。
代码:你的代码都在这里。可以在这里上传、删除、修改代码。
Issues:别人可以对你的代码提出问题,当然也可以当做论坛来用。
管理:可以删除项目、基本项目设置、项目成员管理(可以把你的团队成员加进来一同编写代码)。

然而这样建立的项目是学生自己的项目,不方便老师查看代码。我们可以利用码云上Git的Fork + Pull 模式 来实现教师对学生代码的统一管理。

1.2 使用 Fork + Pull 模式构建统一的学生代码仓库

使用这种模式管理学生代码可以让学生在提交代码的过程中学习到业界最流行的分布式开发技术。具体步骤如下:

  1. 教师新建一个代码库项目,如上图所示。代码库可以是空的项目,然后将项目地址发给学生。
  2. 学生点击右上角的Forked,将教师的代码库Fork到自己的账号下。
  3. 学生在该项目下建立自己学号命名的目录,然后将代码放入该目录。
  4. 学生点击该项目的Pull Requests,然后点击+新建 Pull Request。提出请求,将自己的代码合并到老师建立的代码库项目中。
  5. 教师端点击Pull Request,可以查看学生提交的Pull Request。然后根据需要决定是否接受该学生的合并请求。主项目截图如下。

可以看到学生的代码都被放到主项目中,教师需要的时候可以查看每个学生的提交情况。

这种模式有几个特点要注意:

  1. 合并到主项目的所有代码都可以被项目成员看到。所以要小心学生作业代码泄露问题。我利用这个功能主要是为了让学生学会使用git、熟悉Fork + Pull模式,至于抄袭问题我会使用别的工具来解决。当然也期望码云会推出相关功能。[2018/09/20更新],码云现在已经增加了相关功能解决了该问题,见这篇参考文章开启 Pull Requests 显示权限
  2. 如果一个班级的人数太多,让每个学生发起Pull Request,老师一一审核。那无疑对老师发起了DDOS pull request共计。老师一个一个确认到手段。对于这个问题,教师可以将审核任务委派给班级的学习委员。这个功能具体操作可以参见官方文章:码云上线 Pull Requests 多人代码审核功能

相关参考文章:
Fork + Pull 模式

1.3 使用Git命令模式或者IDE管理源代码

可以参考如下文章:
官方帮助-提交第一行代码
我的其他原创文章:
Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)
Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)
使用Eclipse Egit与码云管理你的代码
IntelliJ IDEA下Git的配置与使用(命令行下)

2.教师项目模板与项目代码质量检查

2.1 教师项目模板

老师布置程序项目类作业的时候,即使再三强调要按照规范来建立项目目录结构。然而最终提交结果依然不尽如人意。每个人似乎都有自己的一套项目结构,并且这个结构通常是惨不忍睹的,比如一包流,所有代码均放到一个包中。
教师完全可以规划好一个项目的标准目录结构,然后让学生Fork或clone下来,这样就无痛的规范了所有学生的项目目录结构。实际上这也是业界流行的一种方式。学生可以参考我的这个专门用于Java教学的一个项目OnlineShop,该项目包含一个可供参考的标准项目目录结构。

2.2 项目代码质量检查(校园版不开放)

学生的代码即使按照目录规范要求提交上来,但是很多时候代码质量惨不忍睹。比如变量命名、对null的处理。让老师一一检查,这可是要了老师的命。码云项目中提供了项目代码质量检查,让学生交给老师审查之前先自查一下。如下图所示:

注:上述代码质量检查现进供企业版用户使用。

推荐直接在IDE中使用阿里巴巴代码规范扫描插件对项目代码进行扫描。

3.真正的让团队合作开发实施起来

传统的程序项目作业,名义上是小组合作完成,然而,实际上由于缺乏工具的支持,很难真正的实现分布式开发。到最后甚至演变成,1拖n(1个组长搞定全部)的现象。
通过码云的Git服务可以真正让分布式开发真正实现,教师可以通过观察项目的提交记录,来确认每个人的是否真正完成了自己的任务。一个课程设计作业提交记录如下图:

老师可以大概判断一下该项目是否真正的实现了分布式开发,开发的工作进度是如何的。

其他几点期望

在教学方面还希望码云能提供如下几个功能:

  1. 代码抄袭判定。
  2. 通过提交记录来判定学生项目推进情况的工具。
  3. 更完善的学生提交数据。比如学生每周提交数、代码行数。不仅是每个学生,而且要有所有学生的总体情况。最好以图形化的方式展示。

其他参考资料

Gitee高校版实训教程

在码云(gitee)上展开程序类课程教学的更多相关文章

  1. 码云Gitee上新建项目教程

    1.在浏览器访问,https://gitee.com/: 2.使用用户名.密码登录: 3.在左下角显示当前用户的项目,点击“+”号,创建项目: 4.填写项目的相关信息,项目名称要和本地要上传的项目名称 ...

  2. 怎么将本地项目放到码云(gitee)上面?图文详解

    git的好处什么的,在此就不多赘述.现在很多公司都在用git了. 那么怎么将本地已经有的项目放到码云(gitee)上呢? 前置条件说明: 1:原来项目所在位置:D:\workspace01\class ...

  3. 码云 Gitee 云端软件平台学习--GitHub

    码云 Gitee http://git.oschina.net/jackjiang/MobileIMSDK http://www.blogjava.net/jb2011/archive/2018/11 ...

  4. GitHub和码云gitee及远程仓库管理

    目录 备注: 知识点 GitHub 码云(gitee.com) gitee的使用 本地版本库关联多个远程库 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢 ...

  5. idea 码云 项目上传

    1.点击导航栏 VCS -> Import into Version Control -> 托管项目到码云 2.输入码云帐号密码,点击login. 3.勾选private,点击托管按钮. ...

  6. Git同步更新操作GitHub和码云仓库上面的代码

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

  7. git本地项目上传至码云gitee

    如果你的本机是安装成功第一次使用,先配置一下一些基本的信息 $ git config--global user.name "Your Name" $ git config --gl ...

  8. 上传本地项目到码云(gitee)

    1.码云上创建一个项目比如zhirong 2.本地创建一个文件夹F:\workspace\zhirong-items,进入zhirong-items打开git bash 3.执行git init ,这 ...

  9. 手把手教你IDEA连接码云(Gitee)

    目录 前言 一.下载.安装git 1.打开git官网,选择你的操作系统 2.根据你的系统位数选择相应的版本下载 3.安装 4.配置全局的用户名.邮箱 5.在idea中配置git目录 二.配置Gitee ...

随机推荐

  1. jquery 中dataTable显示加载中,图片或文字

    引入js文件 <script type="text/javascript" src="${basePath}/lib/datatables/1.10.0/jquer ...

  2. Odoo 堆积木似的软件构建

    七雄争霸秦国一统天下,统一货币度量衡,从此天下统一... 假设在未来的某天,有一款开源的系统平台能将国内的企业管理软件市场进行统一,规范市场,标准开发,所有系统的集成创建通过市场开放的应用独立安装搭建 ...

  3. SpringCloud微服务基础

    1.传统项目架构  传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中.适合于个人或者小团队开发,不适合大团队开发. 2.分布式项目架构(解耦方案) 根据业务需求进行拆分成N个子 ...

  4. 基于角色的访问控制 (RBAC)权限管理

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  5. centos7 删除swap

    https://www.refmanual.com/2016/01/08/completely-remove-swap-on-ce7/#.W8AaSRMzaRs 删除不干净,启动不起来的情况下.需要从 ...

  6. go的包下载失败解决方案

    包被墙的方案 1 翻啊的墙 2 gopm 3 https://github.com/golang/net 4 使用国内网站打包 5 export GOPROXY=https://goproxy.io

  7. 第二阶段第七次spring会议

    昨天我将尝试对软件进行添加搜索引擎的界面. private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEvent ...

  8. dubbo入门学习 四 注册中心 zookeeper入门

    一.Dubbo支持的注册中心 1. Zookeeper 1.1 优点:支持网络集群 1.2 缺点:稳定性受限于Zookeeper 2. Redis 2.1 优点:性能高. 2.2 缺点:对服务器环境要 ...

  9. Python+Selenium 利用ID,XPath,tag name,link text,partial link text,class name,css,name定位元素

    使用firefox浏览器,查看页面元素,我们以“百度网页”为示例 一.ID定位元素    利用find_element_by_id()方法来定位网页元素对象 ①.定位百度首页,输入框的元素 ②.编写示 ...

  10. thinkpadE系列重装系统:u盘启动

    一.下载深度装机大师,制作启动u盘. 二.重启电脑:按F1;进入bios设置:     thinkpad e430c笔记本使用u盘装系统时无法使用u盘启动,这是由于thinkpad e430c笔记本u ...