def commit(url, message, data):
    resp = yield GetPage(url)
    if resp.code == 200:
        resp = escape.json_decode(resp.body)
        sha = resp["sha"]
        body = json.dumps({
            "message": message,
            "content": base64.b64encode(json.dumps(data)),
            "committer": {"name": "cloudaice", "email": "cloudaice@163.com"},
            "sha": sha
        })
        resp = yield PutPage(url, body)
        raise gen.Return(resp)
    else:
        raise gen.Return(resp)