소스 검색

Add basic Stash class.

Jelmer Vernooij 7 년 전
부모
커밋
537b242a05
3개의 변경된 파일53개의 추가작업 그리고 0개의 파일을 삭제
  1. 17 0
      bin/dulwich
  2. 8 0
      dulwich/porcelain.py
  3. 28 0
      dulwich/stash.py

+ 17 - 0
bin/dulwich

@@ -547,6 +547,22 @@ class cmd_check_mailmap(Command):
             print(canonical_identity)
 
 
+class cmd_stash_list(Command):
+
+    def run(self, args):
+        parser = optparse.OptionParser()
+        options, args = parser.parse_args(args)
+        for name in porcelain.stash_list('.'):
+            print(name)
+
+
+class cmd_stash(SuperCommand):
+
+    subcommands = {
+        "list": cmd_stash_list,
+    }
+
+
 class cmd_help(Command):
 
     def run(self, args):
@@ -599,6 +615,7 @@ commands = {
     "rev-list": cmd_rev_list,
     "rm": cmd_rm,
     "show": cmd_show,
+    "stash": cmd_stash,
     "status": cmd_status,
     "symbolic-ref": cmd_symbolic_ref,
     "tag": cmd_tag,

+ 8 - 0
dulwich/porcelain.py

@@ -1239,3 +1239,11 @@ def check_mailmap(repo, contact):
                 raise
             mailmap = Mailmap()
         return mailmap.lookup(contact)
+
+
+def stash_list(repo):
+    """List all stashes in a repository."""
+    with open_repo_closing(repo) as r:
+        from dulwich.stash import Stash
+        stash = Stash.from_repo(r)
+        return []

+ 28 - 0
dulwich/stash.py

@@ -0,0 +1,28 @@
+# stash.py
+# Copyright (C) 2018 Jelmer Vernooij <jelmer@samba.org>
+#
+# Dulwich is dual-licensed under the Apache License, Version 2.0 and the GNU
+# General Public License as public by the Free Software Foundation; version 2.0
+# or (at your option) any later version. You can redistribute it and/or
+# modify it under the terms of either of these two licenses.
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# You should have received a copy of the licenses; if not, see
+# <http://www.gnu.org/licenses/> for a copy of the GNU General Public License
+# and <http://www.apache.org/licenses/LICENSE-2.0> for a copy of the Apache
+# License, Version 2.0.
+#
+
+"""Stash handling."""
+
+class Stash(object):
+    """A Git stash."""
+
+    @classmethod
+    def from_repo(cls, repo):
+        return cls()