虚机ubuntu下局网搭建gitlab服务器

部署过程:

  • 坑一:当安装了postfix后,发现需要重新配置成internet,使用命令

sudo apt-get install gitlab-ce

然后就是参考过程:

https://blog.csdn.net/discoverer100/article/details/51814171

  • 坑二:本人禁用了先前安装的nginx,把external_url改成了“http://192.168.23.128:8010”,才顺利OK。否则看到的界面有问题,是CSS等资源不完整的显示。此时虽然能有改密码的界面,但不会成功的。如果是想和即有的nginx配合,请参考:https://jingyan.baidu.com/article/6525d4b1b5d89dac7c2e944a.html
  • 坑三:腾讯云把gitlab做起生意了,如果想在上面搞,域名和证书都要理顺,而且会对外界资源有排斥。

用户数据设计:

以下基于本人环境,不用参考。

root下面有codera,coderb,coderc

codera下面建立一个标准项目:bgsvc4hbw

grp4task1下面指定codera是owner(负责人),由root创建组,再邀请codera

此后,codera又建立了一个仓库flowshow用于研究git工作流。

进阶应用:

管理员密码重置

https://blog.csdn.net/weixin_30687051/article/details/97273880

工作流学习链接:

https://blog.csdn.net/qq_32452623/article/details/78905181?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

小结一下,gitflow的心得:

1)feature都是起止于develop分支(回归develop时使用:git merge –no-ff)

2)hotfixs是起于master,止于同时推给master(打tag且尾号加1)和develop(回归方式cherry-pick)

3)realse是起于develop,和hotfixs永远不发生关系,止于性质与hotfixs相同,但区别tag是前一位版本号加1。同样不使用merge来回归develop

4)对于master外的发布,可以根据环境灵活建立分支,比如一平台一分支。

5)tag一般不会隐式推送到远端,所以,可以只选择大版本来显示手工命令推送。

https://blog.csdn.net/github_27263697/article/details/79563949

备份和迁移

https://blog.csdn.net/qq_40907977/article/details/106756999

模块接口解惑

软件工程最依托的就是模块接口,所以,早研究为好

window不像linux的gcc编译器,默认把类库中所有函数都开放的。
可以说它更严格。当然gcc也是可以通过
__attribute__((visibility(“default”)))定义成宏开关的方式来放出个别函数和隐藏hidden。
暂且不表,只说:
__declspec(dllimport)——代号A
__declspec(dllexport)——代号B
B的作用是,想导出类和函数,必须用B声明,这样后台就会把要导出东东的声明无声的加入到.obj和编好的dll中。这时.def可有可无了。当然,你不想用B,那就带着.def给别人用吧。

A用的场景本人总结现在有二:
一,前提你是甲方时,即当你的app或者dll要调用别人的类或函数时,修饰用A,告诉编译器,这函数铁定去外面的dll找吧,当然需要外部dll声明了B,与你呼应了。
__declspec(dllexport) void __cdecl Function1(void);
class __declspec(dllexport) MyClass{/*类的定义*/};//
二,前提你是乙方时,当你的的导出类中有静态变量时,需要带着B的修饰,如:
#ifdef SIMPLEDLL_EXPORT
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
其实还有第三点,就是你为乙方的甲方,会用到丙方,那么带上B的修饰,不会让你头很大。

在讲上面概念时,我没有提显示和隐式链接。防止混淆。当你修饰了接口,那么编译器就知晓了呼应关系,那么自然用隐式链接了。但这不是唯一途径,比如:应用lib和VS配置(程序内声明有同样效果#pragma comment(lib,”XXX.lib”))。

而显示链接时,下面有两平台的代码参考。此时,用不着A,B的修饰了。
//windows
SyncCmd SyncExecute = (SyncCmd)GetProcAddress(hModule, “SyncExecute”);
//linux(使用so非a时)
SyncCmd SyncExecute = (SyncCmd )dlsym(hModule, “SyncExecute”);

另外,提一句,还一个维度在接口声明处,那就是
extern “C”——–模块之间的连接约定———位置在顶头
__cdecl————调用约定关键字——–返回值类型和函数名称之间