我正在看看Toggle Feature是如何工作的。实际上,我正在使用简单的版本控制工作流程。一个master
分支,随时可以在生产中部署,另一个分支称为develop
。新功能分支从develop
分叉,然后在稳定时合并回master
。因此,我们将develop
分支合并回master
。当我们将master
推送到存储库时,它会触发Jenkins作业,该作业运行测试并部署到生产中。
所以我想了解在处理功能切换时什么是最严格(或最常见)的版本控制工作流程。
我是否只有一个主分支,所有开发工作都在上面?
或者常见的方法是让所有开发人员都在开发分支,并定期合并到主分支?
答案 0 :(得分:0)
一个与另一个无关。功能切换只是应用程序中选项的一个奇特名称;在您的配置文件中,输入" COOL_FEATURE = off",然后您可以随时在世界上开发您的功能(可能在多个分支中;所有分支都合并到if (cluster.isMaster) {
// fork workers
debug('master process (%s) ', process.pid);
for (let i = 0; i < numCPUs; i++) {
let fork = cluster.fork()
clusterStore.insert(fork.id)
}
// if a worker dies, log it to the console and start another worker
cluster.on('exit', (worker, code, signal) => {
debug('worker (%s) died', worker.process.pid)
if(worker.exitedAfterDisconnect !== true) {
let fork = cluster.fork()
clusterStore.update(worker.id, fork.id)
}
})
// log when a worker starts listening
cluster.on('listening', (worker, address) => {
debug('worker (%s) started', worker.process.pid)
})
process.on('SIGHUP', function() {
debug("respawning forks");
let oldClusters = clusterStore.get().slice()
oldClusters.forEach(function(id) {
let worker = cluster.workers[id]
let timer;
if(worker) {
let fork = cluster.fork()
clusterStore.update(worker.id, fork.id)
}
})
oldClusters.forEach(id => {
cluster.workers[id].send('shutdown')
})
})
} else {
worker()
}
function worker () {
const app = require('../app')
const http = require('http')
const port = normalizePort(process.env.PORT || '3000')
app.set('port', port)
const server = http.createServer(app)
process.on('message', (msg) => {
if(msg ==='shutdown') {
server.close(err => {
if(err) debug("Error encountered while closing server (%s)", err.message)
process.exit()
})
}
})
server.listen(port)
server.on('error', onError)
server.on('listening', onListening)
}
并部署到生产中随着时间的推移)。只有当事物真的具有特征时,才启用该功能(&#34; COOL_FEATURE = on&#34;)。