我有一个带有此文件树的php服务器:
/common
- functions.inc.php
- ...
/website1
/functions
- functions.inc.php
/website2
/functions
- functions.inc.php
网站应单独发货,而不包含common
文件夹,每个案例可能包含不需要的文件(jquery extensions,...)
我想通过所有common
项目同步website*
中的某些文件,例如,当我在common/functions.inc.php
中更改某些内容时,所有website*/functions/
中的文件都会被替换文件夹
我正在考虑使用bash脚本来执行此操作(手动或通过inotify
),但我想知道是否有自动/手动本机或现有工具通过版本控制(git,svn, ...)以这种方式同步这些文件?
我想到的是使用版本号对角度依赖项或maven依赖项进行版本控制。
我目前正在使用外部svn(https://www.assembla.com/home),但如果git在这种情况下有更多选项,我可以考虑迁移。我的项目是在linux机器上(Raspberry pi或Lubuntu),但Windows方法可能很方便。
我完全拥有functions.inc.php
文件,因此我可以在内部编写任何内容,例如版本号
答案 0 :(得分:1)
是的,您可以使用 git pre-commit hook 自动将import sys
######Qt5
from PyQt4 import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
###matplotlib
#import matplotlib
#matplotlib.use('Qt5Agg')
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
from matplotlib.widgets import Cursor
class Main_window(QWidget):
def __init__(self):
QWidget.__init__(self)
self.initUI()
def initUI(self):
### 1 we create the grid
self.Global = QVBoxLayout(self)
self.setLayout(self.Global)
grid= QGridLayout()
self.Global.addLayout(grid)
### a- space for plot
self.tab = QTabWidget()
self.figure = Figure()
self.figure.subplots_adjust(hspace = 0, right=0.95, top=0.94, left=0.15)
self.win = FigureCanvas(self.figure)
self.toolbar = NavigationToolbar(self.win, self.win)
grid.addWidget(self.win,0, 0, 1, 3)
grid.addWidget(self.toolbar, 1, 0, 1, 3)
self.plot = self.figure.add_subplot(111)
self.plot.legend()
#### c- labels
self.xlabl = QLineEdit('qwdwed')
grid.addWidget(self.xlabl, 3, 1, 1, 1)
self.xlabl.textChanged.connect(lambda : self.changelabl("x"))
self.xlabl.setText('Xlabel')
self.ylabl = QLineEdit('qwdwed')
grid.addWidget(self.ylabl, 3, 2, 1, 1)
self.ylabl.textChanged.connect(lambda : self.changelabl("y"))
self.ylabl.setText('Ylabel')
self.win.draw()
self.show()
def changelabl(self, which="y"):
if which=="y":
lab = self.plot.yaxis.label
text = self.ylabl.text()
else:
lab = self.plot.xaxis.label
text = self.xlabl.text()
try:
lab.set_text(text)
lab._get_layout(self.figure.canvas.renderer)
except:
pass
else:
self.win.draw_idle()
app = QApplication(sys.argv)
main = Main_window()
sys.exit(app.exec_())
个p文件与common/functions.inc.ph
个文件同步。
假设在website*/functions/functions.inc.php
中管理文件树的所有文件,然后在每个提交挂钩的sheel脚本下面将检测master
,如果更改,则在提交之前更新common/functions.inc.php file changes
文件变化:
website*/functions/functions.inc.php
如果您要发送除#!/bin/sh
#
branch=$(git rev-parse --abbrev-ref HEAD)
if [[ $branch == "master" ]]; then
{
echo "this is master branch"
file="common/functions.inc.php"
if [[ $(git diff --name-only HEAD) =~ $file ]]; then
echo "changed the file"
cp -fr common/functions.inc.php website1/functions
cp -fr common/functions.inc.php website2/functions
else
echo "didn't change the file $(git diff --name-only HEAD)"
fi
}
else
echo "it's not on master branch"
fi
git add .
文件夹之外的代码,则可以创建新分支(例如commom
),然后忽略release
文件夹:
common
当您的代码被更改时(在网站*文件夹中),您可以更新发货分支以获取新货件:
git checkout -b release
rm -rf common
touch .gitignore
echo common >> '.gitignore'
git add .
git commit -m 'ignore common folder in release branch'
答案 1 :(得分:0)
您可以使用:
这意味着网站也必须由作曲家管理。