dever 7 年之前
父節點
當前提交
accf704f39
共有 3 個文件被更改,包括 78 次插入10 次删除
  1. 26 3
      src/core.py
  2. 4 2
      src/dever.py
  3. 48 5
      src/tool/dever.py

+ 26 - 3
src/core.py

@@ -346,17 +346,40 @@ class Git(object):
 	@staticmethod
 	def update(git, path):
 		if git and File.exists(path) == False:
-			Core.popen('git clone ' + git + ' ' + path, True)
+			Core.popen('git clone ' + git + ' ' + path)
 			print 'init:' + path + ' finished!'
 		else:
-			Core.popen('cd ' + path + ' && git pull', bg=True)
+			file = path + '/' + '.git/'
+			if not File.exists(file):
+				tmp = '/tmp/'
+				File.mkdir(tmp)
+				tmp = tmp + path
+				Core.popen('git clone ' + git + ' ' + tmp + ' && cp -R ' + tmp + '/.git/ ' + file + ' && rm -rf ' + tmp)
+
+			Core.popen('cd ' + path + ' && git pull')
 			print 'update:' + path + ' finished!'
 
+	@classmethod
+	def set(self, git, path):
+		Core.popen('cd ' + path + ' && git pull && git remote set-url origin ' + git, bg=True)
+
+	@classmethod
+	def add(self, git, path):
+		Core.popen('cd ' + path + ' && git pull && git remote add origin ' + git, bg=True)
+
+	@classmethod
+	def push(self, path, branch, msg):
+		if not msg:
+			msg = 'edit'
+		if not branch:
+			branch = 'master'
+		Core.popen('cd ' + path + ' && git pull && git commit -m "'+msg+'" * && git push -u origin ' + branch, True)
+
 class Service(object):
 	@staticmethod
 	def set(git, path):
 		if File.exists(path) == False:
-			Core.popen('git clone ' + git + ' ' + path, True)
+			Core.popen('git clone ' + git + ' ' + path, bg=True)
 			print 'init:' + path + ' finished!'
 		else:
 			Core.popen('cd ' + path + ' && git pull', bg=True)

+ 4 - 2
src/dever.py

@@ -8,8 +8,10 @@
 	dever package manage 更新manage官方组件
 	dever put http://git.5dev.cn:3000/php_package/ 定义自定义组件的仓库组路径
 	dever get collect 获取自定义组件
-	dever pull 在当前目录下更新所有依赖组件
-	dever create 在当前目录下创建一个项目
+	dever pull [git] 在当前目录/[git]下更新所有依赖组件
+	dever create [git] 在当前目录/[git]下创建一个项目
+	dever dev 进入开发模式
+	dever push 将当前目录下的文件推送到线上 如果是开发模式,将本地分支合并到master上
 	dever all 更新当前所有组件
 
 """

+ 48 - 5
src/tool/dever.py

@@ -25,6 +25,10 @@ class Dever(object):
 	@classmethod
 	def rely(self, action, path):
 		package = path + 'package.json'
+		if Args.param:
+			Dever_Create.package(path, Args.param)
+			Args.param = ''
+
 		if File.exists(package):
 			data = File.read(package, '')
 			data = json.loads(data)
@@ -36,10 +40,24 @@ class Dever(object):
 
 	@classmethod
 	def create(self, path):
-		name = os.path.basename(path);
+		name = os.path.basename(path)
 		Dever_Create.boot(path + '/', name)
 		print "create finished!"
 
+	@staticmethod
+	def cur(up = True):
+		name = Args.name
+		path = File.cur()
+		if name:
+			git = ''
+			if '/' in name:
+				git = name
+				name = os.path.basename(git).replace('.git', '')
+			path = path + '/' + name
+			if git and up:
+				Dever_Create.git(git, path)
+		return path
+
 class Dever_Create(object):
 
 	@staticmethod
@@ -76,7 +94,7 @@ class Dever_Create(object):
 	def gitignore(path):
 		file = path + '.gitignore'
 		if not File.exists(file):
-			File.write(file, ".DS_Store\r\n*.pyc\r\ndata/upload/*\r\ndata/database/*\r\ndata/project/*\r\ndata/logs/*\r\n\r\ndata/signature/*\r\ndata/avatar/*")
+			File.write(file, "dm\r\n.DS_Store\r\n*.pyc\r\ndata/upload/*\r\ndata/database/*\r\ndata/project/*\r\ndata/logs/*\r\n\r\ndata/signature/*\r\ndata/avatar/*")
 
 	@staticmethod
 	def dm(path, check = False):
@@ -87,6 +105,20 @@ class Dever_Create(object):
 		if not state:
 			File.write(file, "dm created")
 
+	@staticmethod
+	def package(path, rely):
+		file = path + 'package.json'
+		if not File.exists(file):
+			File.write(file, '{\r\n"rely": "'+rely+'"\r\n}')
+
+	@staticmethod
+	def git(addr, path):
+		file = path + '/' + '.git/'
+		if not File.exists(file):
+			Git.update(addr, path)
+		else:
+			Git.set(addr, path)
+
 	@staticmethod
 	def data(path):
 		path = path + 'data/'
@@ -151,7 +183,7 @@ class Dever_Action(object):
 		Git.update(store, path)
 		Dever.rely(self, path)
 		Dever_Create.package_boot(lib)
-		project = File.cur() + '/'
+		project = Dever.cur(False) + '/'
 		if Dever_Create.dm(project, True):
 			Dever_Create.index(project, name, path)
 		return path
@@ -167,10 +199,21 @@ class Dever_Action(object):
 
 	@classmethod
 	def pull(self):
-		path = File.cur()
+		path = Dever.cur()
 		Dever.rely(self, path + '/')
+		Git.update('', path + '/')
 		return path
 
+	@classmethod
+	def push(self):
+		path = File.cur()
+		Git.push(path + '/', Args.name, Args.param)
+
+	@classmethod
+	def dev(self):
+		path = File.cur()
+		Git.push(path + '/', Args.name, Args.param)
+
 	@classmethod
 	def product(self):
 		path = Dever.dev + Args.name
@@ -187,4 +230,4 @@ class Dever_Action(object):
 		print "creating..."
 		for v in Dever.package_list:
 			Dever_Create.index(path + '/', v['name'], v['path'])
-		Dever.create(path);
+		Dever.create(path)