导航

说明

wing是一个代码同步管理工具类似repo,具有以下特性:

  • 支持WinddowsLinuxMacOS
  • 支持代码同步和本地映射
  • 扩展了针对工作空间的git命令
  • 保留了原git命令
  • 增加了更多常用开发工具,覆盖开发环境、代码检查、模板创建、开发调试、应用发布

wing更多的是一个让开发团队保持一致开发环境的工具,从团队协作和工程开发的角度构建产品或项目,围绕设计,开发,测试,编译,发布等环节的开发活动,提升团队的开发效率。

开发计划

设计

开发空间(dev-space)

结构设计

范例

项目代码

以下为本项目的代码目录简要说明,工程比较简单便于大家快速上手。

使用规范

manifest配置

manifest是指定不同的开发人员获取不同的代码库,但整个代码结构保持一致。确保团队开发人员之间,服务端编译(如:jenkins)开发环境均一致。通过初始化命令来获取代码索引(如:wing init iofomo master xxx.xml

manifest中的project对应的是服务端库,其格式如下。

<!-- path:本地相对目录名称 -->
<!-- name:远程库相对地址 -->
<!-- revision:为指定的库分支或标签,未配置则使用默认 default 中的值,若已配置则在整体创建分支或标签时保持不变 -->
<project path="platform/doc" name="platform/doc.git" revision="master" >
<!-- 将该库中src文件导出到本地目录下 -->
<copyfile dest="build.py" src="build.py"/>
</project>

admin code group

通常admin.xml记录本项目或产品所有的库,不作为实际开发使用,项目或技术负责人使用此索引,可以看到整个团队开发每日详情,便于管理和代码审查。

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
<remote name="origin" fetch=".."/> <!-- branch -->
<default revision="master" remote="origin" sync-j="4"/> <!-- doc -->
<project path="doc" name="project/iofomo/doc.git" /> <!-- platform: always with master -->
<project path="platform/doc" name="platform/doc.git" revision="master" /> <!-- Application -->
<project path="application/client" name="project/iofomo/client.git" /> <!-- Component -->
<project path="compt/common" name="platform/compt/common.git" />
<project path="compt/comm" name="platform/compt/comm.git" />
<project path="compt/uikit" name="platform/compt/uikit.git" />
<project path="compt/framework" name="platform/compt/framework.git" /> <!-- PC: always with master -->
<project path="pc/wing" name="platform/wing.git" />
<project path="pc/tinyui" name="platform/tinyui.git" /> <!-- Template: always with master -->
<project path="template/as" name="platform/template_as.git" revision="master" />
<project path="template/as_mts" name="platform/template_as_jni.git" revision="master" />
<project path="template/as_jar" name="platform/template_as_jar.git" revision="master" />
<project path="template/py" name="platform/template_py.git" revision="master" /> <!-- server -->
<project path="server/fomosite" name="project/iofomo/fomosite.git" />
<project path="server/web" name="project/iofomo/web.git" />
<project path="server/vue" name="project/iofomo/vue.git" /> <!-- Test -->
<project path="test/tools" name="platform/tools.git" revision="master" />
<project path="test/testBot" name="project/iofomo/testBot.git" /> <!-- build -->
<project path="build" name="project/iofomo/build">
<!--<copyfile dest="build.py" src="build.py"/>-->
</project> </manifest>

pc code group

这是pc组代码索引配置,里面仅包含公共库和pc相关的代码库。

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
<remote name="origin" fetch=".."/> <!-- branch -->
<default revision="master" remote="origin" sync-j="4"/> <!-- doc -->
<project path="doc" name="project/iofomo/doc.git" /> <!-- platform: always with master -->
<project path="platform/doc" name="platform/doc.git" revision="master" /> <!-- PC: always with master -->
<project path="pc/wing" name="platform/wing.git" />
<project path="pc/tinyui" name="platform/tinyui.git" /> <!-- Test -->
<project path="test/tools" name="platform/tools.git" revision="master" />
<project path="test/testBot" name="project/iofomo/testBot.git" /> <!-- build -->
<project path="build" name="project/iofomo/build">
<!--<copyfile dest="build.py" src="build.py"/>-->
</project> </manifest>

test code group

这是自动化测试开发组代码索引配置,里面仅包含公共库和test相关的代码库。

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
<remote name="origin" fetch=".."/> <!-- branch -->
<default revision="master" remote="origin" sync-j="4"/> <!-- doc -->
<project path="doc" name="project/iofomo/doc.git" /> <!-- platform: always with master -->
<project path="platform/doc" name="platform/doc.git" revision="master" /> <!-- Test -->
<project path="test/tools" name="platform/tools.git" revision="master" />
<project path="test/testBot" name="project/iofomo/testBot.git" /> <!-- build -->
<project path="build" name="project/iofomo/build">
<!--<copyfile dest="build.py" src="build.py"/>-->
</project> </manifest>

创建分支或标签

如通过命令wing -create b release_v1.0.0 master即基于master分支创建新的release_v1.0.0分支(标签命令同理)。则:

  • manifest所在的Git库会自动创建一个release_v1.0.0的分支。

  • manifest中所有的xml索引文件中default默认分支的值为release_v1.0.0

test.xml在新的分支内容变更如下,公共库(即指定revision分支)保持不变:

<?xml version='1.0' encoding='UTF-8'?>
<manifest>
<remote name="origin" fetch=".."/> <!-- branch -->
<default revision="release_v1.0.0" remote="origin" sync-j="4"/> <!-- doc -->
<project path="doc" name="project/iofomo/doc.git" /> <!-- platform: always with master -->
<project path="platform/doc" name="platform/doc.git" revision="master" /> <!-- Test -->
<project path="test/tools" name="platform/tools.git" revision="master" />
<project path="test/testBot" name="project/iofomo/testBot.git" /> <!-- build -->
<project path="build" name="project/iofomo/build">
<!--<copyfile dest="build.py" src="build.py"/>-->
</project>
</manifest>

快速开始

新手操作看 这里

安装

$ python setup.py install

配置环境变量

Windows:

C:\Users\${user name}\bin添加至系统环境变量。

Linux/MacOS:

~/bin配置为可执行全局目录。

创建工作空间

添加工作空间对应的代码git库服务地址,如:

# 本地索引模式
# wing -space add {space name} {git host} [manifest]
# such as:
$ wing -space add test git@github.com/iofomo

获取代码

$ mkdir test
$ cd test # wing init {space name} {branch/tag} {manifest file}
# such as:
$ wing init test master admin.xml

在当前目录下自动创建一个空的模板索引文件(.wing/manifests/admin.xml),需要添加要同步的代码库映射关系。

许可协议

本项目基于MIT许可协议,详情查看 许可协议 文档。

本项目和所有的工具都是MIT许可证下的开源工具,这意味着你可以完全访问源代码,并可以根据自己的需求进行修改。

【wing】一款轻量快捷的团队开发工具的更多相关文章

  1. 推荐一款轻量小众却高效免费开源windows热键脚本语言Autohotkey

    写在前面的话 Autohotkey是一款轻量小众但高效免费开源的windows热键脚本语言,游戏操纵.鼠标操作.键盘快捷重定义,快捷短语等等,只有你想不到,没有它做不到,神器中的神器呀,相见恨晚. 安 ...

  2. 五款轻量型bug管理工具横向测评

    五款轻量型bug管理工具横向测评 最近正在使用的本地bug管理软件又出问题了,已经记不清这是第几次了,每次出现问题都要耗费大量的时间精力去网上寻找解决方案,劳心劳力.为了避免再次出现这样的情况,我决定 ...

  3. 10款无需编程的App DIY开发工具

    10款无需编程的App DIY开发工具 你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App  DIY开发工具.DIY开发工具不仅节省了开发时 ...

  4. 优秀工具推荐:两款很棒的 HTML5 游戏开发工具

    HTML5 众多强大特性让我们不需要多么高深技术就能创建好玩的网页游戏,同时证明了开放的 Web 技术能与任何其他在游戏开发中使用的技术竞争.正如标题所说,这篇文章推荐的几款很棒 HTML5 游戏开发 ...

  5. Droplet——一款轻量的Golang应用层框架

    Github地址 如标题所描述的,Droplet 是一个 轻量 的 中间层框架,何为中间层呢? 通常来说,我们的程序(注意这里我们仅仅讨论程序的范围,而非作为一个系统,因此这里不设计如 LB.Gate ...

  6. Wenaox 一款轻量性能好的微信小程序状态管理库

    感慨一下!!! 从开始开发 wenaox 从开始到现在,,时不时更新一下,改一改 bug,却发现已经快 1 年了 orz 虽然很少人用 hhh,但偶尔也会有人提一些问题,我就知道还有人用的~ 感兴趣的 ...

  7. 5款Python程序员高频使用开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  8. 技术大众化--10款无需编程的App DIY开发工具

    你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App DIY开发工具.DIY开发工具不仅节省了开发时间和资金,更为那些创意无限热爱应用的人提供 ...

  9. 8款替代Dreamweaver的开源网页开发工具

    Adobe Dreamweaver虽然非常好用,但它并不是唯一一个能够设计.开发.发布精彩网站的Web开发集成环境.我们的开源世界里有很多非常棒的可以完全替代Dreamweaver的各种功能的优秀We ...

  10. Dzz任务板初版完成笔记-仿trello私有部署的一款轻量团队任务协作工具。

    刚完成了第一个版本Dzz任务板的设计开发,记录下设计思路和完成情况. Dzz任务板是DzzOffice中的团队协作套件中的一款应用,它需要安装在DzzOffice中使用. 主界面中需要能够快速简单的创 ...

随机推荐

  1. .NET应用如何防止被反编译

    前言 前段时间分享了两篇关于.NET反编译相关的文章,然后文章留言区就有小伙伴提问:如何防止被反编译?因此本篇文章我们就来讲讲.NET应用如何防止被反编译..NET反编译相关的文章可以看如下文章: 4 ...

  2. c语言代码练习6

    //输入三个数字,依次按照从大到小输出#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int a = 0 ...

  3. oracle下载安装教程(带安装包)

    废话不多说上连接: 链接:https://pan.baidu.com/s/1ukUjxbTpodxwxoGQUKl8KA?pwd=y6ju 提取码:y6ju oracle下载速度太慢了我存在了百度网盘 ...

  4. P3214 [HNOI2011] 卡农 题解

    感觉不是很麻烦,可能就组合排列转化绕一点... 抽象化题意 给定 \(n\) 个元素,从中选出 \(m\) 个集合,要求: 集合不为空,集合里不能有相同的元素 \(m\) 个集合都互不相同 所有元素被 ...

  5. 【腾讯云 HAI域探秘】探索AI绘画之路:利用腾讯云HAI服务打造智能画家

    前言 随着人工智能的飞速发展,AI在艺术创作领域的应用正经历着一场革命性的变革.在这个数字时代,腾讯云的高性能应用服务HAI(Hyper Application Inventor)为艺术家和创作者提供 ...

  6. 格局决定结局,进化还是毁灭,Prompt在其中扮演什么角色

    GPT 时代, Prompt 的价值你们可能不懂 最近, OpenAI 推出了基于 GPT 模型的 GPTs 以及 Agent Stroe 系统,引发广泛关注.业内讨论热点主要集中在吸引用户体验方面. ...

  7. 一篇文章带你了解Python常用自动化测试框架——Pytest

    一篇文章带你了解Python常用自动化测试框架--Pytest 在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框 ...

  8. 手撕Vuex-安装模块数据

    前言 根据上一篇,[手写Vuex]-提取模块信息,我们已经可以获取到模块的信息了,将模块信息变成了我们想要的数据结构,接下来我们就要根据模块的信息,来安装模块的数据. 在上一篇当中我们定义了一个 Mo ...

  9. WebGL初接触

    有感于在不少jd中看到关于WebGL的内容,想起来之前在高程中还没看完的canvas,就匆匆把剩余的一点看完了,高程中的内容还是皮毛,就属于很基础的.概念性的东西. WebGL 画布的3D上下文.不是 ...

  10. C语言计算并输出华氏温度为80F所对应的摄氏温度C。转换公式为:C=5*(F-32)/9

    #include <stdio.h> int main() { double F = 80.0, C;//定义摄氏温度变量,赋值华氏温度 C = 5 * (F - 32) / 9.0;// ...