Porcelain ========= The ``porcelain`` is the higher level interface, built on top of the lower level implementation covered in previous chapters of this tutorial. The ``dulwich.porcelain`` module in Dulwich is aimed to closely resemble the Git command-line API that you are familiar with. Basic concepts -------------- The porcelain operations are implemented as top-level functions in the ``dulwich.porcelain`` module. Most arguments can either be strings or more complex Dulwich objects; e.g. a repository argument will either take a string with a path to the repository or an instance of a ``Repo`` object. Initializing a new repository ----------------------------- >>> from dulwich import porcelain >>> repo = porcelain.init("myrepo") Clone a repository ------------------ >>> porcelain.clone("git://github.com/jelmer/dulwich", "dulwich-clone") Basic authentication works using the ``username`` and ``password`` parameters: >>> porcelain.clone( "https://example.com/a-private-repo.git", "a-private-repo-clone", username="user", password="password") Commit changes -------------- >>> r = porcelain.init("testrepo") >>> open("testrepo/testfile", "w").write("data") >>> porcelain.add(r, "testfile") >>> porcelain.commit(r, b"A sample commit") Push changes ------------ >>> tr = porcelain.init("targetrepo") >>> r = porcelain.push("testrepo", "targetrepo", "master")