CN109240743A - 一种利用特定标签来进行代码切换的方法 - Google Patents
一种利用特定标签来进行代码切换的方法 Download PDFInfo
- Publication number
- CN109240743A CN109240743A CN201810877234.2A CN201810877234A CN109240743A CN 109240743 A CN109240743 A CN 109240743A CN 201810877234 A CN201810877234 A CN 201810877234A CN 109240743 A CN109240743 A CN 109240743A
- Authority
- CN
- China
- Prior art keywords
- code
- snippet
- code snippet
- file
- online
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种利用特定标签来进行代码切换的方法,包括:S1、用户在IDE或类似相关工具中,选中代码;S2、将代码片段以“调试a1”的标签保存,获取到的代码片段,保存成一个独立的文件,文件名为代码片段的MD5值;S3、修改代码;S4、选中修改后的代码片段;S5、将S4中修改后的代码片段,保存为“上线a2”;保存时,需要一并将“调试a1”与“上线a2”的映射关系保存在数据库中;S6、选择需要被切换的代码,系统需要根据被切换代码的MD5值的映射关系获取到相应的代码片段。本发明提供了一种通过对代码做特定的标记来实现不同环境下代码的随意切换的方法,以此来减少不同环境间的代码改动成本,并减少上线风险。
Description
技术领域
本发明涉及一种利用特定标签来进行代码切换的方法。
背景技术
对于不同的网络环境(测试环境、预发环境和线上环境)或者不同的业务需要,通常需要不同的代码片段;有的是由于不同环境下的所需要的配置不一样,有的是为了方便调试。开发人员在修改了特定环境下的代码后,去发布到其他环境下时,时常会忘记将代码修改成相应环境下的代码片段。
Spring Boot:一种比较流行的Web开发框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot框架中提供了通过允许定义多个profile,并指定相应的profile来在不同的环境下运行不同的配置。Spring Boot中指定profile的方式有两种,一种是在配置文件中设置,如:spring.profiles.active=production;另一种是在运行时指定参数,如:java-jar-Dspring.profiles.active=production demo-0.0.1-SNAPSHOT.jar。
现有的方案只能用于配置文件的切换,对于代码片段的修改并不支持。且该方案是通过定义多个不同的配置文件来实现的,不支持针对同一个配置文件做切换。
Git:世界上最先进的分布式版本控制系统之一,常用于代码管理。Git中可以创建不同的分支,每个分支维护不同的代码;不同分支间可以通过命令行或者工具来进行切换。但是该方案适用于做分支管理,功能虽然强大,但是更复杂。
发明内容
为了解决上述的技术问题,本发明的目的是提供一种利用特定标签来进行代码切换的方法,该方法更加轻量级,适用于局部代码片段的切换。
为了实现上述目的,本发明采用了以下的技术方案:
一种利用特定标签来进行代码切换的方法,包括:
S1、用户在IDE或类似相关工具中,选中代码;
S2、将代码片段以“调试a1”的标签保存,获取到的代码片段,保存成一个独立的文件,文件名为代码片段的MD5值;
S3、修改代码;
S4、选中修改后的代码片段,方法同S1;
S5、将S4中修改后的代码片段,保存为“上线a2”,方法同S2,保存的文件命名为修改后的代码片段的MD5值;保存时,需要一并将“调试a1”与“上线a2”的映射关系保存在数据库中;
S6、选择需要被切换的代码,点击切换选项,系统需要根据被切换代码的MD5值的映射关系获取到相应的代码片段。
作为优选方案:所述S1中,选中代码后,获取到代码片段所在的文件名和具体的代码片段内容。
作为优选方案:所述S2中,保存时需要判断指定磁盘目录下是否存在“调试a1”目录,如不存在则创建。
本发明提供了一种通过对代码做特定的标记来实现不同环境下代码的随意切换的方法,以此来减少不同环境间的代码改动成本,并减少上线风险。本发明和Git相比,更加轻量级,而且可以做局部代码片段的替换,而非文件或分支粒度上的切换。
附图说明
图1是本发明的方法的整体流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
如图1所示的一种利用特定标签来进行代码切换的方法,其特征在于,包括:
S1、用户在IDE或类似相关工具中,选中代码;选中代码后,获取到代码片段所在的文件名和具体的代码片段内容。获取方式与目前主流的IDE的获取文件信息和内容方式相同。
S2、将代码片段以“调试a1”的标签保存,获取到的代码片段,保存成一个独立的文件,文件名为代码片段的MD5值;以保证唯一性。为了方便理解我们假设MD5值为a1_MD5。保存时需要判断指定磁盘目录下是否存在“调试a1”目录,如不存在则创建。
S3、修改代码;
S4、选中修改后的代码片段,方法同S1;
S5、将S4中修改后的代码片段,保存为“上线a2”,方法同S2,保存的文件命名为修改后的代码片段的MD5值;我们假设修改后的代码片段的MD5值为a2_MD5。保存时,需要一并将a1_MD5于a2_MD5的映射关系保存在数据库中,以便后续进行代码切换时使用。
S6、选择需要被切换的代码,点击切换选项,将代码片段切换为“调试a1”。系统需要根据被切换代码的MD5值(此时为a2_MD5)的映射关系获取到相应的代码片段(即MD5值为a1_MD5的代码片段)。切换完成后,用户可以进行其他操作,如bug调试,上线部署等。
假设用户在某个文件如Boot.java中存在以下代码(无需关注代码中所实现的具体功能):
用户在上线时需要删除System.out.println("==========<<<服务启动成功>>>==========");该段代码,但是在代码调试时,希望保留该段代码。
则用户使用本专利的方法为:
1)选中某段代码
2)右键点击后,显示弹出框
3)点击“Add a tag”,出现一个弹框
4)在弹框中输入一段文本或字符,如“调试a1”,点击保存
用户删掉System.out.println("==========<<<服务启动成功>>>==========");该行代码后,可以再重复步骤1)至4),并保存为“上线a2”。然后用户当上线时,点击”Switch to tag…“通过切换tag”上线a2”来实现代码的变更。
本发明中当用户在为某段代码添加一个标签时,将该段代码所处文件的文件名和代码片段的内容保存下来。根据每个标签的文案生成一个独立的文件夹保存在磁盘上,并把每个代码片段以文件的形式生成独立的文件保存在相应的文件夹下。当用户想切换成其他标签如“调试a1”的内容时,可以将该段代码片段直接替换成“调试a1”的所对应的文件中的代码。在实际使用中,为了方便操作,会借助于一些智能代码提示之类的功能。
应当指出,以上实施例仅是本发明的代表性例子。本发明还可以有许多变形。凡是依据本发明的实质对以上实施例所作的任何简单修改、等同变化与修饰,均应认为属于本发明的保护范围。
Claims (3)
1.一种利用特定标签来进行代码切换的方法,其特征在于,包括:
S1、用户在IDE或类似相关工具中,选中代码;
S2、将代码片段以“调试a1”的标签保存,获取到的代码片段,保存成一个独立的文件,文件名为代码片段的MD5值;
S3、修改代码;
S4、选中修改后的代码片段,方法同S1;
S5、将S4中修改后的代码片段,保存为“上线a2”,方法同S2,保存的文件命名为修改后的代码片段的MD5值;保存时,需要一并将“调试a1”与“上线a2”的映射关系保存在数据库中;
S6、选择需要被切换的代码,点击切换选项,系统需要根据被切换代码的MD5值的映射关系获取到相应的代码片段。
2.根据权利要求1所述的一种利用特定标签来进行代码切换的方法,其特征在于:所述S1中,选中代码后,获取到代码片段所在的文件名和具体的代码片段内容。
3.根据权利要求1所述的一种利用特定标签来进行代码切换的方法,其特征在于:所述S2中,保存时需要判断指定磁盘目录下是否存在“调试a1”目录,如不存在则创建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810877234.2A CN109240743B (zh) | 2018-08-03 | 2018-08-03 | 一种利用特定标签来进行代码切换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810877234.2A CN109240743B (zh) | 2018-08-03 | 2018-08-03 | 一种利用特定标签来进行代码切换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109240743A true CN109240743A (zh) | 2019-01-18 |
CN109240743B CN109240743B (zh) | 2021-07-27 |
Family
ID=65070441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810877234.2A Active CN109240743B (zh) | 2018-08-03 | 2018-08-03 | 一种利用特定标签来进行代码切换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240743B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117008924A (zh) * | 2023-10-07 | 2023-11-07 | 海马云(天津)信息技术有限公司 | 编译处理方法及装置、通信设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1172304A (zh) * | 1996-06-28 | 1998-02-04 | 松下电器产业株式会社 | 调整信息生成装置和由调整装置所组成的程序开发系统 |
US20120174061A1 (en) * | 2010-12-30 | 2012-07-05 | International Business Machines Corporation | Code suggestion in a software development tool |
CN104272291A (zh) * | 2012-03-07 | 2015-01-07 | 谷歌公司 | 唯一地识别脚本文件 |
CN104657828A (zh) * | 2015-02-17 | 2015-05-27 | 华为技术有限公司 | 数据化和数据匹配方法和代码推荐方法及相关装置 |
CN104881285A (zh) * | 2015-05-25 | 2015-09-02 | 北京理工大学 | 基于本体的代码片段标注与重用系统 |
CN105740137A (zh) * | 2014-12-08 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 分桶测试方法和提供配置信息的方法、装置及系统 |
CN106708740A (zh) * | 2017-01-10 | 2017-05-24 | 网易(杭州)网络有限公司 | 脚本测试方法及装置 |
CN107220034A (zh) * | 2016-03-22 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 一种程序代码标记方法及装置 |
CN107315689A (zh) * | 2017-07-04 | 2017-11-03 | 上海爱数信息技术股份有限公司 | 基于Git代码文件检索粒度的自动化回归测试方法 |
CN107368319A (zh) * | 2017-07-25 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种实现代码库软备份和切换的方法及装置 |
CN107918541A (zh) * | 2017-11-28 | 2018-04-17 | 武汉斗鱼网络科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
US20180165072A1 (en) * | 2016-12-13 | 2018-06-14 | Palantir Technologies Inc. | Extensible data transformation authoring and validation system |
-
2018
- 2018-08-03 CN CN201810877234.2A patent/CN109240743B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1172304A (zh) * | 1996-06-28 | 1998-02-04 | 松下电器产业株式会社 | 调整信息生成装置和由调整装置所组成的程序开发系统 |
US20120174061A1 (en) * | 2010-12-30 | 2012-07-05 | International Business Machines Corporation | Code suggestion in a software development tool |
CN104272291A (zh) * | 2012-03-07 | 2015-01-07 | 谷歌公司 | 唯一地识别脚本文件 |
CN105740137A (zh) * | 2014-12-08 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 分桶测试方法和提供配置信息的方法、装置及系统 |
CN104657828A (zh) * | 2015-02-17 | 2015-05-27 | 华为技术有限公司 | 数据化和数据匹配方法和代码推荐方法及相关装置 |
CN104881285A (zh) * | 2015-05-25 | 2015-09-02 | 北京理工大学 | 基于本体的代码片段标注与重用系统 |
CN107220034A (zh) * | 2016-03-22 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 一种程序代码标记方法及装置 |
US20180165072A1 (en) * | 2016-12-13 | 2018-06-14 | Palantir Technologies Inc. | Extensible data transformation authoring and validation system |
CN106708740A (zh) * | 2017-01-10 | 2017-05-24 | 网易(杭州)网络有限公司 | 脚本测试方法及装置 |
CN107315689A (zh) * | 2017-07-04 | 2017-11-03 | 上海爱数信息技术股份有限公司 | 基于Git代码文件检索粒度的自动化回归测试方法 |
CN107368319A (zh) * | 2017-07-25 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种实现代码库软备份和切换的方法及装置 |
CN107918541A (zh) * | 2017-11-28 | 2018-04-17 | 武汉斗鱼网络科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
JON LOELIGER ET AL.: "《Git版本控制管理》", 31 March 2015, 人民邮电出版社 * |
THORBJORN JEMANDER: "《Mercurial By Example v0.36》", 31 December 2010 * |
徐飞: ""信息安全测评分布式数据同步和版本控制算法研究和实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117008924A (zh) * | 2023-10-07 | 2023-11-07 | 海马云(天津)信息技术有限公司 | 编译处理方法及装置、通信设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109240743B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Grinberg | Flask web development | |
US10129116B2 (en) | Techniques for capturing execution time data in dataflow graphs | |
US7984115B2 (en) | Extensible application platform | |
US20080189679A1 (en) | Method and system for creating, deploying, and utilizing a service | |
CN102609328A (zh) | 系统差分升级方法和装置、移动终端 | |
US8504982B2 (en) | Declarative aspects and aspect containers for application development | |
CN109375921A (zh) | 页面文件快速编译方法、装置及存储设备、计算机设备 | |
Whiting et al. | Creating an iPhone application for collecting continuous ABC data | |
CN102779037A (zh) | 一种自动生成与统一维护java项目的可视化编程方法 | |
US20210109844A1 (en) | Generating and attributing unique identifiers representing performance issues within a call stack | |
CN101599044A (zh) | 一种测试用例的执行方法 | |
CN103984554B (zh) | 软件设计文档的生成方法及装置 | |
CN105843871A (zh) | 分布式应用文件的控制与管理系统 | |
CN111159301A (zh) | 一种基于智能合约的数据创建方法、装置、设备及存储介质 | |
US7735090B2 (en) | On demand software contract modification and termination in running component assemblies | |
CN109240743A (zh) | 一种利用特定标签来进行代码切换的方法 | |
CN102144230A (zh) | 基于记录的代码结构 | |
US20060253854A1 (en) | Extensible infrastructure for task display and launch | |
WO2015092519A1 (en) | Systems and methods for developing application programs | |
US8706751B2 (en) | Method for providing a user interface driven by database tables | |
CN103176903A (zh) | MapReduce分布式系统程序的测试方法及设备 | |
CN107451050B (zh) | 函数获取方法和装置、服务器 | |
CN109271161A (zh) | 样板代码生成方法、装置及存储设备及计算机设备 | |
Van Hattem | Mastering Python: Write powerful and efficient code using the full range of Python's capabilities | |
Naik | Learning Linux Shell Scripting: Leverage the power of shell scripts to solve real-world problems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |