RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
【滑稽】用blog实现版本控制-创新互联

(实现方法和scheme中的链表思想几乎完全相同——不过版本控制本身就是一堆指针,参考 链接:git教程 - 廖雪峰的官方网站)

创新互联建站是一家专注于成都网站建设、做网站与策划设计,富源网站建设哪家好?创新互联建站做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:富源等地区。富源做网站价格咨询:18982081108

博客提供两个接口:

  • 写博客,可以在博客里放任何内容

  • 不限量评论

  • 评论可以删除


博客常常可以修改。但是这个功能有副作用:修改之后,历史版本就消失了——所以最终没有用到这个特性。接下来是实现:

def  创建一个project:

   新建一个具体实现的blog

  新建一个写上项目相关信息的blog         #需求的改动按理较少

  用实现blog的网址评论项目相关信息的blog,并注明这是用于实现的东西

def 更新实现:

  新建一个实现的blog(复制原有代码,修改)

  把项目相关信息blog下的实现地址删了,加上新的实现地址

def 回退:

   把项目相关信息blog下的实现地址删了,加上要退到的版本的地址

def 提交分支:

  做一个实现blog

  在项目相关信息blog下追加评论新的地址

def 查看历史版本:

  打开博客列表

def 合并修改:

  exit("不好意思,不可以合并修改!")

完工!!

非常简洁漂亮的实现。但是这个实现也带来了一些问题:


  • 如果有非常多的改动,那么代码被反复复制,造成了非常多的冗余

  • 整个工程只有单个文件

  • 如果两个人开发两个函数,两人写出的新代码,需要仔细思量才可以整合


对于单文件问题,其实blog很容易就可以支持多个文件。只需要额外创建多个blog,分别写各个文件,然后在实现的blog里写下“本工程包括文件:xxx,xx,xxxx……”即可(当然,要注明对应blog的地址)。如果新的版本改动了其中一个文件,那么新的实现blog只需在已有基础上修改其中一个文件的指向即可。

对于冗余的问题,可以通过引用来解决。比如删除前3行代码,新的文件中只需要写“在xxx的基础上删除前三行”。假如有多个这样的描述,那么把它们连在一起就是整合修改(冲突是可以检查的)——当然这需要一种规范化的语言,来使得可视化变为可能(借助php等手段翻译),否则并无法直观地看到修改后的真实代码。————说到这里,你肯定会说,这不就是git吗?————固然是极其相似的,但这时并非是由git检查来确定修改,而是由编写者来决定哪些地方作了修改,或者要求编写者总结何处作了修改,或者直接使用新的代码。这应当会使得代码更易理解,并且一定程度上可以标记出代码的局部回滚(假如只有一个文件需要使用之前的版本)

完工了吗?也许,毕竟即使翻译需要论坛的支持,我也没能具体给出某个修改语法。局部回滚也显得很勉强,似乎还缺少一个目录结构(不过和unix目录亦文件的哲学非常相似),而且反复引用会使得求值缓慢(这个可以在实现的时候使用缓存,blog不可修改,以后的改动不会有副作用——函数式编程);python的最小单位往往是行,但某些语言的最小单位是类,这时候的修改需要一种新的(可能是递归的的)标记方式,或者混用多种标记方式;项目信息的描述也可能改变,也需要使用地址……总之,总之……这些都太像开玩笑了。

(2018-6-5 于地球)

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:【滑稽】用blog实现版本控制-创新互联
本文网址:http://sczitong.cn/article/jggee.html