GitLab 带commit历史迁移至 Gerrit

最终验证可行的方案:

1. git clone Gerrit空仓库

2. git remote set-url gitlab_url (旧仓库)

3. git branch -r | grep -v ‘\->’ | while read remote; do git branch –track “${remote#origin/}” “$remote”; done

跟踪远程所有分支
关于 ${}特殊用法的介绍,参考链接
上述语句中,${remote#origin/} 的作用与 ${remote#*/} 相同

4. git pull –all –allow-unrelated-histories

指定允许拉取不相关的代码过来Merge, 有多个分支时,要把多个分支都拉下来,注意用户名: git config username
注释: git pull = git fetch + git merge

5. git remote set-url Gerrit_url

(指定新 Gerrit 代码库的地址)

6. git push -u origin –all
git push -u origin –tags

把代码推送给 Gerrit 仓库

觉得这张图对关系的描述比较清晰,放着参考用:

历史参考资料:

GitLab项目迁移到Gerrit

通过Git命令从GitLab将某分支拷贝到Gerrit

这篇文章写得比较有自己的观点:

gitlab迁移到gerrit

重点是说明了如下关键信息:

推送所有分支和标签到gerrit上:
git push –all ; git push –tags

注:这里不能用git push –mirror 是因为gerrit服务端新建的库有个refs/meta/config 包含有权限信息,不能删除(gerrit禁止删除了,如果不禁止,则push –mirror时其权限信息就丢失了)。

迁移所需权限:
Reference:
refs/*
Push Annotated Tag
Push Signed Tag
Forge Committer Identity
Create Reference
Read
Push

windows下jenkins的安装

jdk 要安装 1.8版的,如果使用的是 1.7 版的会报java版本过低.

下载Jenkins:
https://www.jenkins.io/download/

Docker安装:
https://www.jenkins.io/doc/book/installing/docker/
docker pull jenkins/jenkins

MSI安装 官方教程:
https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/
访问地址:http://localhost:8080/

windows环境下 apache 的安装使用

这个教程就介绍得很清楚了: 文章链接

主要步骤:
修改 httpd.conf 的 Define SRVROOT 为实际安装目录
httpd -t 检查配置文件是否合法
httpd -k install -n Apache 以管理员身份安装 Apache 主服务
net start/stop apache 启停服务

常用命令:
httpd -k start:          不会提示详细的错误信息。
httpd -k start -n apache:    会提示详细的错误信息,其中的”apache”修改为你的Apache服务名,可以到计算机服务里找。
httpd -k restart -n apache:   重启。
net start apache:

如果要卸载 Apache, 一定要先卸载apache服务,然后删除安装文件
httpd -k stop
httpd -k uninstall

Windows卸载服务命令:sc delete 服务名

github monitor项目 邮件发送调试问题处理笔记

Django项目中,import project_name失败,造成 project apps目录下的 tt.py processors.py 无法单独执行

解决方案:
注意到 Dockerfile 里通过执行如下shell来启动django服务:
/home/chen/code/Github-Monitor/docker/run.sh

查看该 run.sh

发现里面有一句:
export PYTHONPATH=/home/docker/Github-Monitor/server/

刚好配合 processors.py 开头中注释说的:
# 调试时去掉下面的注释、命令行执行 PYTHONPATH=. venv/bin/python github_monitor/apps/monitor/processors.py
# import django, os
# os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “github_monitor.settings”)
# django.setup()

对比目录结构:
/home/chen/code/Github-Monitor/server/github_monitor/apps/monitor

判断要在docker exec -it container_id /bin/bash中的如下目录:
/home/docker/Github-Monitor/server
执行: PYTHONPATH=. python3 github_monitor/apps/monitor/processors.py
只有这样才能成功单独运行单个文件

对应宿主机的目录为: /home/chen/code/Github-Monitor/server/

====================================================
下面的这个配置值经过测试可以正常触发扫描任务的邮件提醒
# Email Settings for 163
# If you do not fill it in, it is None/False
EMAIL_HOST=”smtp.163.com” # smtp host
EMAIL_PORT=”25″ # smtp port
FROM_EMAIL=”xxx@163.com” # 发件人
EMAIL_HOST_USER=”xxx@163.com” # email user, 如为匿名发送,将值设为空字符即可
EMAIL_HOST_PASSWORD=”xxxxxxxx” # email password, 使用授权码,避免暴露邮箱登陆密码
EMAIL_USE_TLS=”True” # 与SMTP服务器通信时是否使用TLS(安全)连接, 可选True/False
EMAIL_USE_SSL=”False” # 与SMTP服务器通信时是否使用SSL(安全)连接, 可选True/False

# Email Settings for QQ
# If you do not fill it in, it is None/False
EMAIL_HOST=”smtp.qq.com” # smtp host
EMAIL_PORT=”465″ # smtp port
FROM_EMAIL=”xxx@qq.com” # 发件人
EMAIL_HOST_USER=”xxx@qq.com” # email user, 如为匿名发送,将值设为空字符即可
EMAIL_HOST_PASSWORD=”xxxxxxxx” # email password, 使用授权码,避免暴露邮箱登陆密码
EMAIL_USE_TLS=”False” # 与SMTP服务器通信时是否使用TLS(安全)连接, 可选True/False
EMAIL_USE_SSL=”True” # 与SMTP服务器通信时是否使用SSL(安全)连接, 可选True/False

oracle笔记

登陆方式:

sqlplus username/pwd as sysdba; 让用户以管理员身份登陆
sqlplus /@实例名 as sysdba; 直接以管理员身份登陆
sqlplus username/pwd@host_id:1521/实例名; 普通用户登陆

sqlplus /nolog;
conn username/pwd@host_id:1521/实例名;

查看表名称:

select table_name from user_tables;
select table_name from all_tables where owner=upper(‘scott’);

AWS EC2 基于 Lambda CloudWatch配置自动定时开机

操作参考文档:
第一篇
第二篇

主要步骤:
1. 为 Lambda 函数创建自定义 Identity and Access Management (IAM), 即: 策略和执行角色。
2. 创建 停止/启动 EC2 实例的 Lambda 函数 (基于python)。
3. 创建 按计划触发您的函数的 CloudWatch Events 规则。

注意事项:
1. Lambda函数写好之后,只是 save 还不会每一次,一定要点 Deploy 新的代码才会实际生效
2. cron 任务的设置要注意,这里多了一个年份的值,
3. 特别要注意: Cron 表达式中为日期和星期几字段同时指定值。如果您在其中一个字段中指定了值(或一个 *),则必须在另一个字段中使用 ?(问号)。
4. cron 里的时间使用的是 UTC 时间,不是北京时间。换算时间时要用北京时间减去8小时才是UTC时间.