关于线上静态页面资源更新的一些经验分享

目录

  • 关于线上静态页面资源更新的一些经验分享

    • 关于Linux的Patch
    • 关于git
    • 关于Idea

关于线上静态页面资源更新的一些经验分享

最近在负责公司的后台项目,包括了后端和前端。后端直接编译完打成jar包直接上线运行没什么问题。但是前端的页面文件更新每次都要把页面给运维,然后告诉运维路径让运维挨个替换,当然也可以整包替换,
但是如果文件比较多的情况下,整包替换就不合适了。因为现在开发的项目版本控制基本必不可少了,这时候可以利用版本控制软件来生成Patch文件,然后直接交给运维,让运维在项目根目录打补丁就行。

关于Linux的Patch

如果熟悉linux的话对patch命令肯定不陌生,linux很多软件代码的更新都用的是patch,相较于重新下载整份源码,patch文件体积小只需要更新改动的地方。patch本身和diff经常一起用的,具体的用法我就不详细介绍了,网上已经说明很多了。这里用来更新页面的思路其实和linux中的思想是一样的。
常用的的格式:

    patch -d /root/amqp -p0 -E  </root/amqp/0001-.patch

-d 指明了patch的工作目录,此处指源码的根目录。
-pN中的N表示忽略路径中的第几层。如patch文件中路径为a/src/main/java/spittr/chen/AlertServiceImpl.java,如果需要忽略前面的a目录就需要指明-p1
-E表示如果文件更新之后为空则删除这个文件。
-R表示反向,回滚更新
-b用于备份改动的文件,用于重要的操作

关于git

git作为最流行的版本控制软件也实现了diff和patch的功能,git导出patch有两种方式,git diff和git format-patch 。git diff用于生成通用的patch格式,而format-patch用于生成git专用的patch文件。不过我经过测试,两种生成的文件都是和linux的patch命令兼容的,也就是说两种生成的文件都可以直接使用patch命令来打补丁。不过这里有一个需要的需要注意的地方就是,git生成的patch文件中,在指明影响的文件路径时,默认原来的文件前面会加上路径a/,而改动后的文件前面会加上路径b/(我查看了git官网文档也有提及,但是不清楚为什么要默认这么写,如果有知道的希望能告知下),如下所示:

diff --git a/src/main/java/spittr/chen/AlertServiceImpl.java b/src/main/java/spittr/chen/AlertServiceImpl.java
new file mode 100644
index 0000000..7c8ebd1
--- /dev/null
+++ b/src/main/java/spittr/chen/AlertServiceImpl.java

所以在linux中使用的时候需要指明参数-p1来忽略第一层路径,或者在使用git diff命令时加上参数--no-prefix。

其实git本身也有对应于linux patch的命令apply,还有更为强大的am。但是要求是必须是git项目。如果使用的git项目,推荐使用git的命令尤其是am命令,他必须使用format-patch生成的文件,format-patch文件携带了提交的记录包括作者,提交注释,日期等等,信息和pull差不多。关于这两个命令网上有很多的教程这里不再说明。对于我这个需求。已经因为线上的页面文件一般是文件夹的形式存在,所以使用linux的patch即可满足需求。

关于Idea

如果你用的开发工具是Idea的话,idea可以很方便的生成patch文件。如下图:

在版本的控制的log标签页,选中自己需要生成补丁的提交记录右键即可生成patch文件。

原文地址:https://www.cnblogs.com/chenfangzhi/p/9665538.html

时间: 2024-07-29 22:28:25

关于线上静态页面资源更新的一些经验分享的相关文章

分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2

Android -- 资源使用和总结经验分享

颜色资源                                                                                       颜色XML文件格式 <?xml version="1.0" encoding="utf-8"?> <resources> //resources根元素 <color name="" >#000000</color> //

unity 热更新 c# 实战经验分享(一)

demo 工程地址 :http://pan.baidu.com/s/1qWBYxqc 我们接上篇 内容继续讲 http://www.cnblogs.com/zyc-it/p/4820810.html (1)工程分离 什么叫工程分离呢,就是要把你的游戏包(后面简称 #主工程#),和你的热更新工程(后面简称 #热更新工程#) 分离开.首先我先说一下 ,我为什么要这么做: 原因:从github 上更新下来的 jsb的工程,把所有的热更新代码写在了unity 里面了,然后在 热更新工程里面 去引用这些c

unity 热更新 c# 实战经验分享(二) - 动态Protobuff协议,再也不用担心为了换条协议换包了 ~~!

先提前说明一下,如果哪位小伙伴 觉得生疏的话,可以看这篇博客的前面两个博客,里面讲述了 高大上 JSB,unity 热更新方案,用强大的宇宙第一编辑器vs 来开发 unity 热观更新脚本,更新c# 不在是梦 这次的demo 工程我已经长传了,地址 在这里http://pan.baidu.com/s/1qWQlXUW:下载后(放在D盘 放在D盘 放在D盘!!!!)里面的unity 工程直接打开然后运行main 场景 .就会出现下图,这篇博客唯一 的意义就在于这个demo,实战就是实战不跟你讲废话

浅谈php生成静态页面

一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直

nginx实现静态页面,图片分离

nginx(静态页面,图片分离) #vi /usr/local/nginx/conf/nginx.conf user nginx nginx; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream webservs { s

Django线上部署样式加载不出来

当我们线上部署时,需要将debug 模式调成 False,但是后台样式就会失效,原因是 django不支持 线上 静态文件, 增加下面这行即可解决. OK 原文地址:https://www.cnblogs.com/wujf-myblog/p/10939414.html

为什么我执行了发布操作,但是线上的资源并没有更新?

随着整个互联网时代的发展,前后端职能的分离,在过去的一段时间里,前后端各自仅只关注自己最擅长的领域.但是,随着"大前端"时代的到来,前端们又一次开始需要关注后端,或者前后端链接的问题了. 本文起源于笔者的一次线上发布经历,事情的前因后果大概就如何题目所提到的,但是诡异的还不仅如此,当笔者执行了release操作之后,如果用之前访问的链接(如http://www.examplae.com)去访问执行了发布的web应用的话,会发现资源并没有更新,但是如果给这个链接加上一个参数(如http:

mac os x 之通过远程主机在nginx上部署web静态页面

1.mac使用ssh命令登陆远程主机 因为苹果mac os x自带ssh命令,所以我们只需打开终端输入 $ ssh [email protected] 在这之前最好在服务器上上传自己的ssh key,避免每次登陆输入密码 稍作等待就连接上服务器了   2.mac使用scp命令向远处主机上传文件 在终端窗口,按下command+n,打开另一个终端窗口,并输入 $ scp ~/local/file [email protected]:~/file  当然一般我们上传的是文件夹,所以加上-r $ sc