老鬼的博客 来都来啦,那就随便看看吧~
本地编写文章自动推送到服务器
发布于: 2018-05-18 更新于: 2023-11-08 分类于: Hexo 阅读次数: 

1.服务端

1.1 blog

  • hexo-blog的svn仓库
  • svn指令文件,没有配置的请点下载,密码:kdgm,配置path
  • nginx代理到svn checkout的hexo-blog的svn仓库

1.2 图片资源

  • 方式1

    七牛云

  • 方式2

    放在自己服务器上,创建svn版本库,配置nginx,就可以访问啦

2.本地

2.1 实现目的

1
2
本地编写好文章以后,自动执行bat文件,推送到远端服务器,
实现自动更新

2.2 实现方法

  • my-blog目录

    E:\my-tools\hexo-blog

  • hexo-blog的svn仓库

    E:\my-work\SVN-PROPERTY\u-mojo\hexo-blog

  • hexo-images的svn仓库

    E:\my-work\SVN-PROPERTY\u-mojo\hexo-images

  • 实现原理

    就是将编写好的文章,执行hexo clean,hexo g,
    生成的文件在根目录的public下,然后执行相关
    copy指令,将blog/public下的文件替换到hexo-blog
    的目录下,然后svn commit到远端,由于远端的
    仓库设置了post commit hook,所以本地svn commit
    以后,服务端对应的目录也会是最新的。

  • 自动更新bat文件,blog.bat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@echo off
title my blog

::设置变量
set BLOG_HOME=E:\my-tools\hexo-blog
set BLOG_SVN_HOME=E:\my-work\SVN-PROPERTY\u-mojo\hexo-blog
set TMP_HOME=E:\my-work\SVN-PROPERTY\u-mojo
set LINE=########
set END_LINE=...


::进入E盘
e:
echo %LINE%enter blog home%END_LINE%
cd %BLOG_HOME%


echo %LINE%exec hexo clean%END_LINE%
::清除掉hexo原本的文件
call hexo clean

echo %LINE%exec hexo g%END_LINE%
::hexo重新编译
call hexo g

echo %LINE%enter blog svn home%END_LINE%
cd %BLOG_SVN_HOME%
::svn clean update
svn cleanup
svn update

::进入umojo目录
cd %TMP_HOME%
mkdir blog-tmp

::将.svn文件copy到临时目录
xcopy %BLOG_SVN_HOME%\.svn %TMP_HOME%\blog-tmp\.svn /s/e/i/y

echo %LINE%copy file into svn catalog%END_LINE%

::删除非隐藏文件
rmdir /s /q %BLOG_SVN_HOME%

::重新创建hexo-blog目录
mkdir hexo-blog

::将临时目录中的.svn拷贝到hexo-blog目录下
xcopy %TMP_HOME%\blog-tmp\.svn %BLOG_SVN_HOME%\.svn /s/e/i/y

::删除临时的.svn保存目录
rmdir /s/q %TMP_HOME%\blog-tmp

::进入svn目录
cd %BLOG_SVN_HOME%

::生成版本号 version.html
call vs
::copy文件
xcopy /d/y/s "%BLOG_HOME%\public\*" "%BLOG_SVN_HOME%\"

echo %LINE%svn commit%END_LINE%

cd %BLOG_SVN_HOME%
::加入svn版本库
svn add ./* --force
::svn status
svn commit -m "jren-blog-commit"

echo %LINE%svn commit success%END_LINE%

c:

cd C:\Users\Administrator


pause

  • vs.bat
1
2
3
4
5
6
@echo off
title create version.html
set version=Version:%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_jren
echo **************current version:%version%
echo current path:%cd%
echo %version%>version.html
  • 执行效果
    1.png
    2.png
*************感谢您的阅读*************