# Conflicts:
#	.idea/workspace.xml
#	git.py
This commit is contained in:
Saturneic 2019-03-14 01:13:53 +08:00
commit 95ebb9af11
7 changed files with 67 additions and 79 deletions

BIN
.DS_Store vendored

Binary file not shown.

33
.idea/workspace.xml generated
View File

@ -74,8 +74,8 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/git.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="454">
<caret line="233" column="34" lean-forward="true" selection-start-line="233" selection-start-column="34" selection-end-line="233" selection-end-column="34" />
<state relative-caret-position="226">
<caret line="49" column="42" selection-start-line="49" selection-start-column="42" selection-end-line="49" selection-end-column="42" />
<folding>
<element signature="e#0#9#0" expanded="true" />
<marker date="1552496550761" expanded="true" signature="13921:14647" ph="..." />
@ -96,7 +96,7 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/keygen.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360">
<state relative-caret-position="120">
<caret line="27" column="27" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
<folding>
<element signature="e#0#10#0" expanded="true" />
@ -219,8 +219,6 @@
<option value="$PROJECT_DIR$/info.py" />
<option value="$PROJECT_DIR$/branchmanager.py" />
<option value="$PROJECT_DIR$/main.py" />
<option value="$PROJECT_DIR$/ssh.py" />
<option value="$PROJECT_DIR$/git.py" />
</list>
</option>
</component>
@ -480,20 +478,19 @@
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1440" height="811" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Favorites" order="0" side_tool="true" />
<window_info content_ui="combo" id="Project" order="1" visible="true" weight="0.1509299" />
<window_info content_ui="combo" id="Project" order="1" visible="true" weight="0.14663805" />
<window_info id="Structure" order="2" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Database Changes" order="0" show_stripe_button="false" />
<window_info anchor="bottom" id="Terminal" order="1" sideWeight="0.4985694" weight="0.32962447" />
<window_info active="true" anchor="bottom" id="Event Log" order="2" sideWeight="0.50214595" side_tool="true" visible="true" weight="0.32962447" />
<window_info anchor="bottom" id="Version Control" order="3" sideWeight="0.49785408" visible="true" weight="0.32962447" />
<window_info anchor="bottom" id="Event Log" order="2" sideWeight="0.50500715" side_tool="true" visible="true" weight="0.2628651" />
<window_info anchor="bottom" id="Version Control" order="3" sideWeight="0.4985694" weight="0.32962447" />
<window_info anchor="bottom" id="Python Console" order="4" weight="0.3286517" />
<window_info anchor="bottom" id="Docker" order="5" show_stripe_button="false" />
<window_info anchor="bottom" id="Message" order="6" />
<window_info anchor="bottom" id="Find" order="7" weight="0.329718" />
<window_info anchor="bottom" id="Run" order="8" sideWeight="0.49427754" weight="0.2628651" />
<window_info anchor="bottom" id="Run" order="8" sideWeight="0.49499285" weight="0.2628651" />
<window_info anchor="bottom" id="Debug" order="9" sideWeight="0.49928468" weight="0.30737135" />
<window_info anchor="bottom" id="Cvs" order="10" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="11" weight="0.4" />
@ -574,17 +571,10 @@
</entry>
<entry file="file://$PROJECT_DIR$/branchmanager.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="900">
<caret line="66" column="24" selection-start-line="66" selection-start-column="24" selection-end-line="66" selection-end-column="24" />
<state relative-caret-position="120">
<caret line="8" column="27" selection-start-line="8" selection-start-column="27" selection-end-line="8" selection-end-column="27" />
<folding>
<element signature="e#0#21#0" expanded="true" />
<marker date="1552415132051" expanded="true" signature="178:183" ph="..." />
<marker date="1552415132051" expanded="true" signature="2638:3140" ph="..." />
<marker date="1552415132051" expanded="true" signature="3158:3361" ph="..." />
<marker date="1552415132051" expanded="true" signature="3378:3493" ph="..." />
<marker date="1552415132051" expanded="true" signature="3519:3983" ph="..." />
<marker date="1552415132051" expanded="true" signature="4005:4694" ph="..." />
<marker date="1552415132051" expanded="true" signature="5012:5663" ph="..." />
</folding>
</state>
</provider>
@ -604,7 +594,8 @@
<state relative-caret-position="360">
<caret line="27" column="27" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
<folding>
<element signature="e#0#10#0" expanded="true" />
<element signature="e#0#21#0" expanded="true" />
<marker date="1552409960112" expanded="true" signature="1144:1635" ph="..." />
</folding>
</state>
</provider>
@ -626,7 +617,7 @@
<caret line="93" column="22" lean-forward="true" selection-start-line="93" selection-start-column="22" selection-end-line="93" selection-end-column="22" />
<folding>
<element signature="e#0#21#0" expanded="true" />
<marker date="1552494762449" expanded="true" signature="16338:16344" ph="..." />
<marker date="1552453766451" expanded="true" signature="15701:15707" ph="..." />
</folding>
</state>
</provider>

View File

@ -25,6 +25,7 @@ class Changes(window.Window):
self.list.bind("<<ListboxSelect>>",self.show_change)
self.current_index = None
self.broad = broad
self.list_bak = []
def draw_widgets(self):
self.list.grid(row=0, column=0)
@ -67,45 +68,47 @@ class Changes(window.Window):
def show_change(self, *args):
self.current_index = self.list.curselection()[0]
if self.discard_status[self.current_index]:
self.discard['text'] = 'Discard'
else:
self.discard['text'] = 'Add'
if len(self.list_bak) > 0:
self.current_index = self.list.curselection()[0]
if self.discard_status[self.current_index]:
self.discard['text'] = 'Discard'
else:
self.discard['text'] = 'Add'
stdout = os.popen("git diff --cached {0}".format(self.change_files[self.current_index])).read()
self.text.delete('1.0', END)
self.text.insert(INSERT,self.change_files[self.current_index]+"\n","TITLE")
self.text.insert(INSERT, "-----------------------------------------------\n","TITLE")
if_data = False
lines = []
str = ""
for char in stdout:
if char is not '\n':
str += char
else:
lines.append(str)
str = ""
for line in lines:
if line[0] is '@':
if_data = True
if line[0] is '+' and if_data:
self.text.insert(INSERT,line+"\n","ADD")
elif line[0] is '-' and if_data:
self.text.insert(INSERT, line + "\n", "DEL")
elif line[0] is '@':
self.text.insert(INSERT, line + "\n", "INFO")
else:
if if_data:
self.text.insert(INSERT, line + "\n","DATA")
stdout = os.popen("git diff --cached {0}".format(self.change_files[self.current_index])).read()
self.text.delete('1.0', END)
self.text.insert(INSERT,self.change_files[self.current_index]+"\n","TITLE")
self.text.insert(INSERT, "-----------------------------------------------\n","TITLE")
if_data = False
lines = []
str = ""
for char in stdout:
if char is not '\n':
str += char
else:
self.text.insert(INSERT, line + "\n","TITLE")
lines.append(str)
str = ""
for line in lines:
if line[0] is '@':
if_data = True
if line[0] is '+' and if_data:
self.text.insert(INSERT,line+"\n","ADD")
elif line[0] is '-' and if_data:
self.text.insert(INSERT, line + "\n", "DEL")
elif line[0] is '@':
self.text.insert(INSERT, line + "\n", "INFO")
else:
if if_data:
self.text.insert(INSERT, line + "\n","DATA")
else:
self.text.insert(INSERT, line + "\n","TITLE")
self.text.see(END)
self.text.see(END)
def set_list(self, list):
for item in list:
self.list.insert(END, item)
self.list_bak =list
ret_code = re.compile(r"[:]")
tmp_ret = ret_code.split(item)
self.change_files.append(tmp_ret[1])

10
git.py
View File

@ -215,15 +215,9 @@ class Git(ssh.SSH):
self.get_branch_server()
if name in self.remotes.keys():
if branch not in self.branches_server:
proc = subprocess.Popen("git push -u {0} {1}".format(name, branch), stderr=subprocess.STDOUT,
stdout=subprocess.PIPE)
stdout, stderr = proc.comunicate(timeout=30)
return stdout.decode("utf-8")
return os.popen("git push -u {0} {1}".format(name, branch)).read()
else:
proc = subprocess.Popen("git push {0} {1}".format(name, branch), stderr=subprocess.STDOUT,
stdout=subprocess.PIPE)
stdout, stderr = proc.comunicate(timeout=30)
return stdout.decode("utf-8")
return os.popen("git push {0} {1}".format(name, branch)).read()
else:
raise ValueError("Name Abnormal")
else:

View File

@ -10,8 +10,8 @@ class Key(ssh.SSH):
self.connect(5)
self.pub_key = None
self.keygen = None
self.local_path = "/Users/huyibing/"
self.public_key_path = self.local_path+".ssh/id_rsa.pub"
self.local_path = os.path.expanduser('~')
self.public_key_path = os.path.join(self.local_path, '.ssh', 'id_rsa.pub')
self.public_key = None
def add_key(self):
@ -20,14 +20,14 @@ class Key(ssh.SSH):
@staticmethod
def create_key():
if os.path.exists(os.path.join(os.environ["HOME"],".ssh","id_rsa.pub")):
os.remove(os.path.join(os.environ["HOME"],".ssh","id_rsa.pub"))
os.remove(os.path.join(os.environ["HOME"], ".ssh", "id_rsa"))
if os.path.exists(os.path.join(os.path.expanduser('~'),".ssh","id_rsa.pub")):
os.remove(os.path.join(os.path.expanduser('~'),".ssh","id_rsa.pub"))
os.remove(os.path.join(os.path.expanduser('~'), ".ssh", "id_rsa"))
print("Key Path:","{0}".format(os.path.join(os.environ["HOME"],".ssh","id_rsa")))
print("Key Path:","{0}".format(os.path.join(os.path.expanduser('~'),".ssh","id_rsa")))
ret_code = subprocess.Popen(["ssh-keygen", "-b 4096","-N ''", "-q",
"-f {0}".format(os.path.join(os.environ["HOME"],".ssh","id_rsa")),
], shell=True,
"-f {0}".format(os.path.join(os.path.expanduser('~'),".ssh","id_rsa")),
], shell=False,
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = ret_code.communicate(input=b"\ny\n")
return stdout.decode("utf-8")

16
main.py
View File

@ -18,14 +18,14 @@ class Main(window.Window):
master.title("GitEasy")
self.style.configure("M.MButton",)
self.connect = None
self.hostname_label = Label(self, width=8)
self.hostname_label = Label(self, width=10)
self.user_name_label = Label(self, width=12)
self.password_label = Label(self, width=8)
self.connection_status = Label(self, width=8)
self.hostname = Entry(self, width=15)
self.user_name = Entry(self, width=15)
self.password = Entry(self, width=15, show="*")
self.list_projects = Button(self, width=12)
self.list_projects = Button(self, width=13)
self.fix_project = Button(self, width=12)
self.create_project = Button(self, width=12)
self.broad = Text(self, width=85, height=30)
@ -35,13 +35,13 @@ class Main(window.Window):
self.set_local = Button(self, width=12)
self.add_remote = Button(self, width=12)
self.list_remote = Button(self, width=12)
self.clone_project = Button(self, width=12)
self.clone_project = Button(self, width=13)
self.project_status = Button(self, width=12)
self.pull = Button(self, width=12)
self.push = Button(self, width=12)
self.add = Button(self, width=12)
self.commit = Button(self, width=12)
self.save = Button(self, width=12)
self.save = Button(self, width=15)
self.ssh_tools = Button(self, width=12)
self.info = None
self.save_info = None
@ -49,11 +49,11 @@ class Main(window.Window):
self.git = None
self.draw_widget()
if os.path.exists(os.path.join(os.environ['HOME'],"save_data.json")):
if os.path.exists(os.path.join(os.path.expanduser('~'),"save_data.json")):
self.get_save_data()
def get_save_data(self):
save_file = open(os.path.join(os.environ['HOME'],"save_data.json"),"r")
save_file = open(os.path.join(os.path.expanduser('~'),"save_data.json"),"r")
json_data = save_file.readline()
save_infos = json.loads(json_data)
self.save_info = save_infos[0]
@ -336,12 +336,12 @@ class Main(window.Window):
save_info["fix_project"] = self.git.fix_name
save_infos.append(save_info)
json_info = json.dumps(save_infos)
save_file = open(os.path.join(os.environ['HOME'],"save_data.json"),"w")
save_file = open(os.path.join(os.path.expanduser('~'),"save_data.json"),"w")
save_file.write(json_info)
save_file.close()
self.broad.insert(INSERT, "--------------------------\n")
self.broad.insert(INSERT, "Data Information Saved\n")
self.broad.insert(INSERT, "Path: "+os.path.join(os.environ['HOME'],"save_data.json"))
self.broad.insert(INSERT, "Path: "+os.path.join(os.path.expanduser('~'), "save_data.json"))
self.broad.see(END)
else:
raise AttributeError("Please Connect And Set Local Path First.")

View File

@ -33,8 +33,8 @@ class SSH_Tools(window.Window,Key):
self.broad.see(END)
def do_check_key(self):
ret_code = subprocess.Popen("ssh -T {0}@{1}".format(self.user, self.hostname),
shell=True,
ret_code = subprocess.Popen("ssh -o StrictHostKeyChecking=no -T {0}@{1}".format(self.user, self.hostname),
shell=False,
stdin=subprocess.PIPE, stdout=subprocess.PIPE
)
stdout, stderr = ret_code.communicate(input=b"\x03")