深度优先

这个家伙好懒,除了文章什么都没留下

0%

我们的目标是把代码整体从Coding迁移到自建的Gitlab服务器,并保留所有分支和Tags记录。

1. clone旧项目到本地目录

1
2
git clone git@git.coding.net:username/x-server.git

2. 本地目录添加新的远程主机地址

1
2
git remote add gitlab git@gitlab.bmkp.xx:xx_200/x-server.git

上面的命令添加了一个名为gitlab的主机地址。

3. 推送master到新的仓库

1
2
git push -u gitlab master

上面命令将本地的master分支推送到gitlab主机,同时指定gitlab为默认主机,后面就可以不加任何参数使用git push了。

4. 推送所有分支

推送前先用 git branch -a 查看所有远程分支,然后分别 checkout 到本地。

1
2
git checkout -b dev origin/dev

上述命令是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支。

最后执行命令推送全部分支。

1
2
git push --all gitlab

5. 推送所有Tag

1
2
git push gitlab --tags

参考:
git push命令
使用git命令方式将本地工程上传到Gitlab或Github

作者:adeng2016
链接:https://www.jianshu.com/p/902d959d5336
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

安装

1
yum -y install mailx

测试是否安装成功

1
2
[root@localhost tools]# which mail
/bin/mail

编辑配置文件

vi /etc/mail.rc
在文件末尾添加

1
2
3
4
5
6
set from=*****@163.com
set smtp=smtp.163.com
set smtp-auth-user=****@163.com
set smtp-auth-password=****
set smtp-auth=login
set ssl-verify=ignore

其中

1
2
3
4
5
from:对方收到邮件时显示的发件人
smtp:指定第三方发邮件的smtp服务器地址
set smtp-auth-user:第三方发邮件的用户名
set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码
smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

测试

1
echo '1233' | mail -s 'test.'  -a test.txt 1439084907@qq.com

1
mail  -s  '主题'  1439084907@qq.com  <  test.txt 
1
sed -i 's/\r$//' urfile

Gitlab自动备份,发邮箱提醒脚本:

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
#!/bin/bash

# gitlab 机房备份路径
LocalBackDir=/data/gitlabData/backups

#当前系统日期
DATE=`date +"%Y-%m-%d"`

#邮件写入的文件
mailcontent=$LocalBackDir/mail/mailcontent_$DATE

# 收件人邮箱
mailToUser=1439084907@qq.com

#Log存放路径
LogFile=$LocalBackDir/log/backup_$DATE.log

#新建日志文件
touch $LogFile

#追加日志到日志文件
echo "Gitlab auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" > $LogFile
echo "---------------------------------------------------------------------------" >> $LogFile

#执行gitlab本地备份功能
gitlab-rake gitlab:backup:create SKIP=registry
# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败
if [ $? -eq 0 ];then
#追加日志到日志文件
echo "-----------------------------------Success!----------------------------------------" >> $LogFile
echo "Gitlab auto backup at local server, end at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

#写Email的正文内容
> "$mailcontent"
echo "GitLab Backup Daily Report,backup at local server Success ! Please Check your Email and read the following log file" >> $mailcontent

#读取mailcontent内容当做邮件正文 ,附件为Log文件
cat $mailcontent | mail -s 'Congratulation! GitLab auto backupFiles Success Report.' -a $LogFile $mailToUser
else
#追加日志到日志文件
echo "-----------------------------------Failed!---------------------------------------" >> $LogFile
echo "Gitlab auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile

#写Email的正文内容
> "$mailcontent"
echo "GitLab Backup Daily Report,Backup at local server failed Failed ! Please Check your Email and read the following log file !" >> $mailcontent

#读取mailcontent内容当做邮件正文 ,附件为Log文件
cat $mailcontent | mail -s 'Warning! GitLab Backup at local server Failed Report.' -a $LogFile $mailToUser
fi

配置SMTP发送邮件配置,使用163邮箱:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
################################
# GitLab email server settings #
################################
# see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md#smtp-settings
# Use smtp instead of sendmail/postfix.

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "****@163.com"
gitlab_rails['smtp_password'] = "P********"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "****@163.com"
gitlab_rails['gitlab_email_reply_to'] = "****@163.com"
# gitlab_rails['smtp_openssl_verify_mode'] = 'none' # Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert', see http://api.rubyonrails.org/classes/ActionMailer/Base.html
# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"

当修改完成后, 记得重新加载配置并重启:

1
2
gitlab-ctl reconfigure
gitlab-ctl restart

测试:

1
gitlab-rails console
1
Notify.test_email('1439084907@qq.com', 'test', 'test body').deliver_now

当然这个邮件不会真正德发到你的邮箱里,只是一个本地测试。

可以去网站进行密码找回的测试: