diff options
author | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2011-04-18 08:52:02 +0200 |
---|---|---|
committer | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2011-04-18 08:52:02 +0200 |
commit | 451383433d842f4a6734573a37aaf9098dd245c7 (patch) | |
tree | 5c0f3fab84181c700cdebffe8b6251ec030bf033 /vcs_git.rb | |
parent | e8a6206719edc70b0ce7257da5b34471f7f8e71f (diff) |
complete change of configuration
Diffstat (limited to 'vcs_git.rb')
-rw-r--r-- | vcs_git.rb | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/vcs_git.rb b/vcs_git.rb new file mode 100644 index 0000000..e74502c --- /dev/null +++ b/vcs_git.rb @@ -0,0 +1,78 @@ +############################################################################ +# Copyright 2009,2010 Benjamin Kellermann # +# # +# This file is part of dudle. # +# # +# Dudle is free software: you can redistribute it and/or modify it under # +# the terms of the GNU Affero General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# Dudle is distributed in the hope that it will be useful, but WITHOUT ANY # +# WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public # +# License for more details. # +# # +# You should have received a copy of the GNU Affero General Public License # +# along with dudle. If not, see <http://www.gnu.org/licenses/>. # +############################################################################ + +require "time" +require "log" + +class VCS + GITCMD="export LC_ALL=de_DE.UTF-8; git" + def VCS.init + `#{GITCMD} init` + end + + def VCS.rm file + `#{GITCMD} rm #{file}` + end + + def VCS.add file + `#{GITCMD} add #{file}` + end + + def VCS.revno + # there is a bug in git log --format, which supresses the \n on the last line + `#{GITCMD} log --format="format:x"`.scan("\n").size + 1 + end + + def VCS.cat revision, file + revs = `#{GITCMD} log --format="format:%H"`.scan(/^(.*)$/).flatten.reverse + `#{GITCMD} show #{revs[revision-1]}:#{file}` + end + + def VCS.history + log = `#{GITCMD} log --format="format:%s|%ai"`.split("\n").reverse + ret = Log.new + log.each_with_index{|s,i| + a = s.scan(/^([^\|]*)(.*)$/).flatten + ret.add(i+1, Time.parse(a[1]), a[0]) + } + ret + end + + def VCS.commit comment + tmpfile = "/tmp/commitcomment.#{rand(10000)}" + File.open(tmpfile,"w"){|f| + f<<comment + } + ret = `#{GITCMD} commit -a -F #{tmpfile}` + File.delete(tmpfile) + ret + end + + def VCS.branch source, target + `#{GITCMD} clone #{source} #{target}` + end + + def VCS.revert revno + revhash = `#{GITCMD} log --format="%H"`.split("\n").reverse[revno-1] + `#{GITCMD} checkout #{revhash} .` + VCS.commit("Reverted Poll to version #{revno}") + end +end + + |