{ "info": { "author": "Qiangning Hong", "author_email": "hongqn@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "===========================\nCommand Line Tools for CODE\n===========================\n\n.. image:: http://code.dapps.douban.com/codecli/raw/master/images/codecli-256.png\n\n\u8fd9\u662f\u4e00\u4e2a\u65b9\u4fbf\u4f7f\u7528 `code`_ \u8fdb\u884c\u5408\u4f5c\u5f00\u53d1\u7684\u5de5\u5177\u3002\n\n.. _code: http://code.dapps.douban.com\n\nInstall\n=======\n\n\u4f7f\u7528 virtualenv::\n\n $ virtualenv codecli\n $ codecli/bin/pip install -e git+http://code.dapps.douban.com/codecli.git#egg=codecli\n $ ln -s `pwd`/codecli/bin/code $HOME/bin/\n # make sure add $HOME/bin to your $PATH\n\nUsage\n=====\n\n\u521b\u5efa\u672c\u5730clone\n~~~~~~~~~~~~~~\n\n\u5982\u679c\u4f60\u8981\u5411\u4e00\u4e2a\u4ed3\u5e93\u8d21\u732e\u4ee3\u7801\uff0c\u5148\u5728 code \u4e0a\u4ece\u5176 fork \u4e00\u4efd\uff08\u8fd9\u90e8\u5206\u76ee\u524d\u53ea\u80fd\u624b\u5de5\u64cd\u4f5c\n\uff0c\u7b49code\u63d0\u4f9bfork api\u540e\u53ef\u81ea\u52a8\u8fdb\u884c\uff09\uff0c\u7136\u540e\u8fd0\u884c\n\n\n::\n\n $ code fork {repo} {your_fork} {dir}\n $ cd dir\n\n\u5176\u4e2d\uff0crepo \u548c your_fork \u53ea\u9700\u8981\u586b\u5199\u5728 code \u4e0a\u7684\u9879\u76ee\u540d\u5373\u53ef\uff0c\u4f8b\u5982::\n\n $ code fork codecli hongqn/codecli codecli\n\n``your_fork``\u548c``dir``\u53ef\u4ee5\u5ffd\u7565\uff0c\u9ed8\u8ba4\u503c\u5206\u522b\u4e3a``{user_name}/{repo}``\u548c``{repo}``\uff0c\u4f8b\u5982::\n\n $ code fork codecli\n\n\u5c31\u7b49\u540c\u4e8e\u524d\u4e00\u4e2a\u4f8b\u5b50(\u9700\u8981\u786e\u4fdd\u4f60\u5728~/.codecli.conf\u91cc\u8bbe\u7f6e\u4e86user.email)\n\n\n\u5982\u679c\u4f60\u53ea\u662f\u60f3\u7ba1\u7406\u81ea\u5df1\u7684\u4ed3\u5e93\uff0c\u800c\u4e0d\u662f\u5411\u5176\u4ed6\u4eba\u7684\u4ed3\u5e93\u8d21\u732e\u4ee3\u7801\uff0c\u53ef\u4ee5\u7528 ``code\nclone`` \u547d\u4ee4::\n\n $ code clone codecli\n\n\n``code fork`` \u548c ``code clone`` \u547d\u4ee4\u90fd\u4f1a\u521b\u5efa ``origin`` \u548c ``upstream`` \u4e24\u4e2a\nremote \uff0c\u5728 codecli \u7684\u5176\u4ed6\u547d\u4ee4\u4e2d\uff0c\u4f1a\u9ed8\u8ba4\u8fd9\u4e24\u4e2a remote \u5747\u5b58\u5728\uff0c ``origin`` \u6307\u5411\n\u4f60\u81ea\u5df1\u7684fork\uff0c ``upstream`` \u6307\u5411\u4e0a\u6e38\u4ed3\u5e93\uff08\u5373\u4f60\u5e0c\u671b\u8d21\u732e\u4ee3\u7801\u7684\u4ed3\u5e93\uff09\u3002\u5bf9\u4e8e\u4f7f\u7528\n``code clone`` \u7684\u4ed3\u5e93\u800c\u8a00\uff0c ``origin`` \u548c ``upstream`` \u5747\u6307\u5411\u4f60\u81ea\u5df1\u7684\u4ed3\u5e93\u3002\n\n\u540c\u65f6\uff0c codecli \u8fd8\u4f1a\u8bbe\u7f6e user.email \u548c user.name \uff0c\u5e76\u4fdd\u5b58\u5728 ~/.codecli.conf \u4e2d\n\u3002\u4e4b\u540e\u6bcf\u6b21\u4f7f\u7528 codecli \u521b\u5efa\u672c\u5730\u4ed3\u5e93\u65f6\uff0c\u90fd\u4f1a\u81ea\u52a8\u4ece ~/.codecli.conf \u4e2d\u8bfb\u53d6\u4e4b\u524d\u4fdd\n\u5b58\u7684\u7528\u6237\u4fe1\u606f\u3002\n\n\n\u5f00\u59cb\u4e00\u4e2a\u5206\u652f\n~~~~~~~~~~~~\n\n\u4efb\u4f55\u65f6\u5019\uff0c\u4f60\u60f3\u5f00\u53d1\u4e00\u4e2a\u65b0\u7684 feature \u3001\u4fee\u6539\u4e00\u4e2a bug \u3001\u751a\u81f3\u53ea\u662f\u4fee\u590d\u4e00\u4e2a typo \u65f6\uff0c\n\u90fd\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4::\n\n code start {branch-name}\n\n\u4f1a\u81ea\u52a8\u4ece\u6700\u65b0\u7684upstream/master\u521b\u5efa\u5206\u652f\u3002\u76f8\u5f53\u4e8e::\n\n git fetch upstream\n git checkout -b {branch} --no-track upstream/master\n\n\u4e0d\u7528\u62c5\u5fc3\u521b\u5efa\u4e86\u592a\u591a branch \u53d1\u9001 pullreq \u65f6\u9009\u62e9\u9ebb\u70e6\uff0c codecli \u4e3a\u4f60\u63d0\u4f9b\u4e86\u5feb\u901f\u63d0\u4ea4\npullreq \u7684\u65b9\u6cd5\uff08\u89c1 `\u63d0\u4ea4pull request`_ \uff09\u3002\n\n\u4e0eupstream/master\u540c\u6b65\n~~~~~~~~~~~~~~~~~~~~~\n\n\u5f53\u4f60\u7684\u5206\u652f\u5f00\u53d1\u4e86\u4e00\u6bb5\u65f6\u95f4\uff0c\u5e0c\u671b\u548c\u4e0a\u6e38\u5176\u4ed6\u4eba\u5df2\u7ecf\u63d0\u4ea4\u7684\u6539\u52a8\u5408\u5e76\uff0c\u4ee5\u4fbf\u53ef\u4ee5\u786e\u4fdd\u4f60\u7684\n\u6539\u52a8\u5728\u6700\u65b0\u4ee3\u7801\u4e0a\u4e5f\u53ef\u6b63\u5e38\u5de5\u4f5c\u65f6\uff0c\u4f60\u9700\u8981\u540c\u6b65\u4e0a\u6e38\u4ee3\u7801::\n\n code sync\n\n\u76f8\u5f53\u4e8e::\n\n git fetch upstream\n git merge upstream/master\n\n\u53ef\u4ee5\u7528 ``--rebase`` \u53c2\u6570\uff08\u7f29\u5199\u4e3a ``-r`` \uff09\u6307\u5b9a\u6267\u884c ``git rebase`` \u800c\u975e ``git\nmerge`` \u3002\n\n\u5982\u679c\u4f60\u7684\u5206\u652f\u662f\u4ece ``code hotfix`` \uff08\u89c1 `\u4ece\u975emaster\u5206\u652f\u8fdb\u884chotfix`_ \uff09 \u521b\u5efa\u7684\uff0c\n\u4e0d\u7528\u62c5\u5fc3\uff0c codecli \u4f1a\u6b63\u786e\u5904\u7406\uff0c\u4e0d\u4f1a\u4e0d\u5c0f\u5fc3\u628a master merge \u8fdb\u6765\u5f04\u5f97\u4e00\u56e2\u7cdf\u3002\n\n\u63d0\u4ea4pull request\n~~~~~~~~~~~~~~~~\n\n\u5f53\u4f60\u7684\u65b0 feature \u6216\u8005 bugfix \u5df2\u7ecf\u5b8c\u6210\uff0c\u51c6\u5907\u63d0\u4ea4 pullreq \u65f6\uff08\u5f53\u7136\u5efa\u8bae\u4f60\u5148\u7528 ``git\nrebase -i`` \u6e05\u7406\u4e00\u4e0b\u63d0\u4ea4\uff0csquash \u65e0\u610f\u4e49\u7684 oops \u6216\u8005 tmpsav \u4e4b\u7c7b\u7684 commits \u5148\uff09\n\uff0c\u5728\u4f60\u7684\u5206\u652f\u4e0b\u6267\u884c\u5982\u4e0b\u547d\u4ee4::\n\n code pr\n\n\u4f1a\u81ea\u52a8 merge master \uff0c push \u5230 origin \uff0c\u7136\u540e\u6253\u5f00\u6d4f\u89c8\u5668\u76f4\u8fbe\u521b\u5efa pull request \u9875\n\u9762\u3002\u76f8\u5f53\u4e8e::\n\n code sync\n git push --set-upstream origin {branch}\n open http://code.dapps.douban.com/{upstream}/newpull/new?head_ref={branch}&base_ref=master\n\n\u5982\u679c\u662f hotfix \u5206\u652f\uff0c \u4e5f\u4f1a\u8bbe\u7f6e\u6b63\u786e\u7684\u76ee\u6807\u5206\u652f \uff08\u6bd4\u5982 ``release`` \uff09\n\n\u52a0 ``-t`` \u53c2\u6570\u53ef\u4ee5\u7ed9\u5176\u4ed6\u4eba\u7684 fork \u63d0\u4ea4 pull request\uff0c\u6bd4\u5982::\n\n code pr -t satoru\n\n\u6b64\u65f6\uff0c\u4e5f\u53ef\u4ee5\u7528 ``user:branch`` \u7684\u5f62\u5f0f\uff0c\u6307\u5b9a\u5411\u5176\u4ed6\u4eba\u7684\u6307\u5b9a branch \u63d0\u4ea4 pull\nrequest\uff0c\u6bd4\u5982::\n\n code pr -t satoru:zsh_completion\n\n\n\u4ece\u975emaster\u5206\u652f\u8fdb\u884chotfix\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n\u4e0d\u5c11\u5bf9\u7a33\u5b9a\u6027\u6709\u8981\u6c42\u7684\u9879\u76ee\u5728\u7ebf\u4e0a\u90e8\u7f72\u7684\u4e0d\u662f master \u5206\u652f\uff0c\u800c\u662f\u5176\u4ed6\u5206\u652f\uff08\u5e38\u89c1\u7684\u662f\n``release`` \u5206\u652f\uff09\u3002\u5982\u679c\u53d1\u73b0\u4e00\u4e2a\u7ebf\u4e0a bug \u9700\u8981\u7acb\u523b\u4fee\u590d\uff0c\u4f46\u6b64\u65f6 master \u5df2\u7ecf\u6709\u4e86\n\u4e00\u4e9b\u65b0\u7684\u6539\u52a8\uff0c\u5982\u679c\u5728 master \u4e0a\u4fee\u590d\u7136\u540e merge \u5230 release \u4e0a\u7684\u8bdd\uff0c\u53ef\u80fd\u89e3\u51b3\u4e86\u6b64\u95ee\n\u9898\u4f46\u53c8\u5e26\u6765\u4e86\u65b0\u7684\u95ee\u9898\u3002\u6240\u4ee5\u5e0c\u671b\u53ea\u4e0a\u7ebf\u9488\u5bf9\u7d27\u6025bug\u7684\u6539\u52a8\u3002\n\n\u8fd9\u65f6\u4f60\u9700\u8981 codecli \u7684 hotfix \u529f\u80fd::\n\n code hotfix {release-branch-name} {hotfix-name}\n\n\u5176\u4e2d {release-branch-name} \u4e3a\u7ebf\u4e0a branch \u540d\uff0c\u4f8b\u5982::\n\n code hotfix release ahbei-404\n\n\u4f1a\u4ece upstream/{release-branch-name} \u521b\u5efa\u5206\u652f\uff0c\u8d77\u540d\u4e3ahotfix-{release-branch-name}-{hotfix-name} \u3002\u76f8\u5f53\u4e8e::\n\n git fetch upstream\n git checkout -b hotfix-release-ahbei-404 --no-track upstream/release\n\n\u5f53\u6267\u884c ``code pr`` \u65f6\uff0c\u4f1a\u81ea\u52a8\u5c06\u76ee\u6807\u5206\u652f\u6307\u5411 {release-branch-name} \u3002\n\n\ncheckout \u5230\u67d0\u4e2a pullreq\n~~~~~~~~~~~~~~~~~~~~~~~\n\n\u5728 review \u67d0\u4e2a pullreq \u65f6\uff0c\u6709\u65f6\u6211\u4eec\u5e0c\u671b\u80fd\u591f\u5728\u672c\u5730 checkout \u6539\u52a8\u7684\u4ee3\u7801\uff0c\u4ee5\u4fbf\u5728\n\u672c\u5730\u6267\u884c\u5355\u5143\u6d4b\u8bd5\u3001\u8c03\u8bd5\u7b49\u5de5\u4f5c\u3002\u611f\u8c22 code \u63d0\u4f9b\u7684 `\u4f7f\u7528refs\u62c9\u53d6pr\n`_ \u7684\u529f\u80fd\n\uff0c\u53ef\u4ee5\u7528\u5982\u4e0b\u547d\u4ee4::\n\n code pr {pr_id}\n\n\u6293\u53d6\u6307\u5b9a pullreq \u5e76\u81ea\u52a8 checkout \u5230\u5b83\u7684\u4ee3\u7801\u3002 \n\n\u7528 ``-t`` \u53c2\u6570\u53ef\u4ee5 checkout \u5230\u67d0\u4e2a\u7528\u6237\u7684 fork \u4e0a\u7684 pull request \u3002\n\n\u5728 checkout \u5230 pullreq \u540e\uff0c\u5982\u679c\u6b64 pullreq \u8fd8\u6709\u540e\u7eed\u63d0\u4ea4\uff0c\u53ef\u4ee5\u4f7f\u7528::\n\n code sync\n\n\u547d\u4ee4\u8fdb\u884c\u540c\u6b65\u3002\u5e76\u4e14\u8fd8\u53ef\u4ee5\u5728\u672c\u5730\u7f16\u8f91\u4ee3\u7801\uff0c\u63d0\u4ea4\u3002\u7136\u540e\u4f7f\u7528::\n\n code pr\n\n\u547d\u4ee4\u5411\u6b64 pullreq \u7684\u53d1\u8d77\u4ed3\u5e93\u7684\u5bf9\u5e94\u5206\u652f\u53d1\u8d77 pullreq \u3002\u5f53\u53d1\u8d77\u4eba merge \u4e86\u4f60\u7684\npullreq \u540e\uff0c\u4f60\u63d0\u4ea4\u7684\u6539\u52a8\u4f1a\u81ea\u52a8\u51fa\u73b0\u5728\u6700\u521d\u7684 pullreq \u4e2d\u3002\n\n\nfetch \u5176\u4ed6\u4eba\u7684 fork\n~~~~~~~~~~~~~~~~~~~\n\n\u5f53\u5408\u4f5c\u5f00\u53d1\u4e00\u4e2a\u9879\u76ee\u65f6\uff0c\u53ef\u80fd\u5176\u4ed6\u4eba\u4e5f\u6709\u5bf9 upstream \u9879\u76ee\u7684 fork\uff0c\u6709\u65f6\u4f60\u9700\u8981\ncheckout \u6216\u8005 merge \u4ed6\u7684\u4ee3\u7801\u3002\u624b\u5de5\u7528\u957f\u957f\u7684 git url \u52a0 remote \u7136\u540e fetch \uff1f\u4e0d\u7528\n\u90a3\u4e48\u9ebb\u70e6\uff0c\u7528 ``code fetch`` \u8f7b\u677e\u641e\u5b9a::\n\n code fetch {username}\n\n\u5373\u53ef\u81ea\u52a8\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 remote \uff0c\u6307\u5411\u5176\u4ed6\u4eba\u7684 fork \uff0c\u5e76 fetch \u4e4b\u3002\u76f8\u5f53\u4e8e::\n\n git remote add {username} http://code.dapps.douban.com/{username}/{repo}.git\n git fetch {username}\n\n\u8fd9\u8981\u6c42\u5176\u4ed6\u4eba\u7684 fork \u9075\u5faa code \u7684\u65b0\u7684\u4e8c\u7ea7\u76ee\u5f55\u7684\u7ed3\u6784\uff08\u5373 username/repo\uff09\u3002\u5982\u679c\norigin \u4e5f\u662f\u4e00\u4e2a fork \u7684\u8bdd\uff0c\u4e5f\u9700\u8981\u9075\u5faa\u6b64\u7ed3\u6784\u3002\n\nend \u5206\u652f\u7684\u5f00\u53d1\n~~~~~~~~~~~~~~~~~~~\n\n\u5f53\u7ed3\u675f\u4e00\u4e2a\u529f\u80fd\u7684\u5f00\u53d1\u65f6, \u4f60\u53ef\u4ee5\u7528 ``code end`` \u6765\u641e\u5b9a::\n\n code sync\n code end {branchname}\n\n\u5373\u53ef\u81ea\u52a8\u5220\u9664\u8fdc\u7a0b\u548c\u672c\u5730\u7684branch, \u7ed3\u675f\u8fd9\u4e2a\u529f\u80fd\u7684\u5f00\u53d1\u3002\u76f8\u5f53\u4e8e::\n\n git br -d {branchname}\n git push origin :{branchname}\n\nbranchname \u7f3a\u7701\u503c\u4e3a\u5f53\u524d branch \uff0c\u6240\u4ee5\u7528 ``code end`` \u4f1a\u76f4\u63a5\u5220\u9664\u5f53\u524d\u7684 branch\u3002\n\n\u5982\u679c\u9700\u8981\u540c\u65f6\u5220\u9664\u591a\u4e2a branch \uff0c\u4e5f\u53ef\u4ee5\u7528 ``code end br1 br2 br3`` \u8fd9\u79cd\u65b9\u5f0f\u3002\n\n\n\u5c06 upstream \u7684\u4e00\u4e2a\u5206\u652f merge \u5230\u53e6\u4e00\u4e2a\u5206\u652f\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\u5982\u679c\u4f60\u7ef4\u62a4\u7684\u9879\u76ee\u91c7\u7528\u5982 release \u8fd9\u6837\u7684\u5206\u652f\u6807\u8bb0\u6b63\u5f0f\u4e0a\u7ebf\u7248\u672c\u548c\u5f00\u53d1\u7248\u672c\uff0c\u5e76\u4e14\u7528\n``code hotfix`` \u547d\u4ee4\u6765\u7ed9\u7ebf\u4e0a\u7248\u672c\u505a hotfix \uff0c\u90a3\u4e48\u4f60\u53ef\u80fd\u4f1a\u7ecf\u5e38\u6709\u8fd9\u6837\u4e24\u4e2a\u9700\u6c42\uff1a\n\n1. \u628a master \u5206\u652f\u4e2d\u7684 commits \u5408\u5e76\u5230 release \u5206\u652f\uff0c\u51c6\u5907\u4e0a\u7ebf\u3002\n2. \u628a\u505a\u4e86 hotfix \u7684 release \u5206\u652f\u4e2d\u7684\u6539\u52a8\u5408\u5e76\u5230 master \u5206\u652f\u4e2d\u3002\n\n\u8fd9\u65f6\uff0c\u4f60\u53ef\u4ee5\u7528 ``code merge`` \u547d\u4ee4\u6765\u7b80\u5316\u64cd\u4f5c\u3002\u5bf9\u7b2c\u4e00\u79cd\u60c5\u51b5\uff0c\u6267\u884c::\n\n code merge master release\n\n\u4f1a\u53d1\u8d77\u4e00\u4e2a\u5c06 upstream \u4e2d\u7684 master \u5206\u652f\u5408\u5e76\u5230 release \u5206\u652f\u7684 pull request\u3002\u5bf9\n\u7b2c\u4e8c\u79cd\u60c5\u51b5\uff0c\u6267\u884c::\n\n code merge release master\n\n\u5219\u4f1a\u53d1\u8d77\u4e00\u4e2a\u4ece release \u5230 master \u7684 pull request \u3002\n\n\u4f7f\u7528 ``--push`` \u53c2\u6570\u53ef\u4ee5\u5728\u672c\u5730\u521b\u5efa\u4e00\u4e2a\u5206\u652f\u6267\u884c merge \u64cd\u4f5c\uff0c\u7136\u540e\u76f4\u63a5 push \u5230\nupstream \uff08\u9700\u8981\u6709 upstream \u7684 push \u6743\u9650\uff09\u3002\u5982\u679c\u6709\u51b2\u7a81\uff0c\u53ef\u4ee5\u5728\u672c\u5730\u4fee\u590d\u51b2\u7a81\u540e\uff0c\n\u91cd\u65b0\u7528 ``--push`` \u8fd0\u884c\u3002\n\n\n\u5b9a\u5236 webbrowser \u7684\u884c\u4e3a\n~~~~~~~~~~~~~~~~~~~~~~\n\n\u5728\u53d1\u9001 pullreq \u65f6\uff0ccodecli \u4f1a\u4f7f\u7528\u9ed8\u8ba4\u6d4f\u89c8\u5668\u6253\u5f00 code \u7684\u63d0\u4ea4\u754c\u9762\u3002\u53ef\u4ee5\u7528\u4ee5\u4e0b\u547d\n\u4ee4\u6765\u5b9a\u5236\u6b64\u884c\u4e3a\uff1a\n\n code config webbrowser.name firefox\n\n\u6307\u5b9a\u4f7f\u7528 Firefox \u6765\u6253\u5f00\u3002\u6b64\u5904\u53ef\u9009\u62e9\u7684\u503c\u4e3a Python \u7684 webbrowser_ \u6a21\u5757\u4e2d\u6ce8\u518c\u7684\u540d\u5b57\u3002\n\n.. _webbrowser: http://docs.python.org/2.7/library/webbrowser.html\n\n code config webbrowser.name /path/to/executable\n\n\u4f7f\u7528\u6307\u5b9a\u811a\u672c\u6253\u5f00\uff0c\u5f85\u6253\u5f00\u7684 URL \u4f1a\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9\u811a\u672c\u3002\n\n code config webbrowser.name none\n\n\u4e0d\u4f7f\u7528\u6d4f\u89c8\u5668\u6253\u5f00\uff0c\u4ec5\u5728\u7ec8\u7aef\u663e\u793aURL\u5730\u5740\u3002\n\n code config webbrowser.name --unset\n\n\u6062\u590d\u6210\u4f7f\u7528\u9ed8\u8ba4\u6d4f\u89c8\u5668\u6253\u5f00\u3002\n\n\n\u8ba9code\u4e0egit\u547d\u4ee4\u7ed3\u5408\u66f4\u7d27\u5bc6\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\u5728\u4f7f\u7528codecli\u7684\u65f6\u5019\uff0c\u7ecf\u5e38\u4f1a\u51fa\u73b0\u4e00\u4f1a\u4f7f\u7528code\u547d\u4ee4\u4e00\u4f1a\u4f7f\u7528git\u547d\u4ee4\u7684\u60c5\u51b5\uff0c\u4e3a\u4e86\u8ba9\u4e24\u4e2a\u547d\u4ee4\u7ed3\u5408\u66f4\u7d27\u5bc6\uff0c\u4f60\u53ef\u4ee5\u914d\u7f6e\u4e00\u4e0b~/.gitconfig\uff0c\u53c2\u8003\u914d\u7f6e\u5982\u4e0b::\n\n [alias]\n start = !code start\n pr = !code pr\n sync = !code sync\n end = !code end\n\nzsh\u4e0b\u7684code\u547d\u4ee4\u8865\u5168\n~~~~~~~~~~~~~~~~~~~\n\n\u5c06 ``_code`` \u590d\u5236\u5230 ``$fpath`` \u4e2d\u7684\u67d0\u4e2a\u76ee\u5f55\uff0c\u91cd\u542f zsh \u5c31\u53ef\u4ee5\u3002\n\n\nChangeLog\n=========\n\n2013-11-13\n\n* bugfix: \u4fee\u590d\u5f53 ``webbrowser.name`` \u672a\u8bbe\u7f6e\u6216\u8005\u8bbe\u7f6e\u4e3a script \u65f6\u4f1a\u629b\u5f02\u5e38\u7684\u95ee\u9898\u3002\n Thank xupeng!\n\n2013-11-08\n~~~~~~~~~~\n\n* feature: \u589e\u52a0 ``code config`` \u547d\u4ee4\uff0c\u53ef\u4ee5\u4f7f\u7528 ``code config webbrowser.name``\n \u5b9a\u5236 webbrowser \u884c\u4e3a\u3002\n* feature: \u5141\u8bb8 ``code clone`` \u4f7f\u7528URL\u4f5c\u4e3a\u53c2\u6570\u3002 Thank satoru!\n* feature: ``code fork`` \u65f6\u9ed8\u8ba4\u4f7f\u7528\u81ea\u5df1\u7684fork\u4ed3\u5e93\u540d\u3002 Thank satoru!\n* feature: ``code fork`` \u65f6\u9ed8\u8ba4 clone \u5230\u4ed3\u5e93\u540c\u540d\u76ee\u5f55\u3002 Thank satoru!\n* feature: \u652f\u6301 code ssh url\u3002 Thank chenzheng and yaofeng!\n* feature: \u5141\u8bb8 ``code end`` \u7ed3\u675f\u591a\u4e2a branches\u3002 Thank satoru!\n* bugfix: \u4fee\u6b63\u5f53\u4ed3\u5e93\u540d\u4e2d\u542b\u6709 ``g`` ``i`` ``t`` \u5b57\u7b26\u65f6\u4f1a\u51fa\u9519\u7684\u95ee\u9898\u3002 Thank anrs!\n* bugfix: \u4fee\u590d\u5224\u65ad\u5206\u652f\u662f\u5426\u5df2\u7ecf push \u5230 remote \u7684\u65b9\u6cd5\uff0c\u907f\u514d\u8bef\u5224\u3002 Thank satoru!\n* bugfix: \u4fee\u590d\u91cd\u590d\u5f00\u542f pr-on-pr \u4f1a\u51fa\u9519\u7684\u95ee\u9898\u3002 Thank menghan!\n\n2013-07-11\n~~~~~~~~~~\n\n* \u5728\u9996\u6b21\u53d1 pullreq \u7684 branch \u4e0a\u4f7f\u7528 rebase master \u4ee3\u66ff merge master\uff0c\u51cf\u5c11\u65e0\u8c13\n \u7684 merge commit\n\n2013-07-11\n~~~~~~~~~~\n\n* docfix: \u4fee\u6b63\u4e86 ``code fork --help`` \u5e2e\u52a9\u4fe1\u606f\u4e2d\u7684\u6837\u4f8b\u4ed3\u5e93\u540d (thank satoru)\n\n* bugfix: ``code merge --push`` \u6ca1\u6709\u6267\u884c ``git fetch upstream`` \uff0c\u5bfc\u81f4 merge\n \u7684\u6570\u636e\u4e0d\u662f\u6700\u65b0\u7684\n\n2013-06-26\n~~~~~~~~~~\n\n* ``code end`` \u547d\u4ee4\u589e\u52a0 ``-f`` \u53c2\u6570\uff0c\u53ef\u5220\u9664\u672a push \u7684\u5206\u652f (thank guibog)\n\n2013-06-18\n~~~~~~~~~~\n\n* \u5141\u8bb8 remote \u4e3a \"\u7528\u6237\u540d@\" \u7684\u5f62\u5f0f\u7684 URL (thank guibog)\n\n2013-06-13\n~~~~~~~~~~\n\n* bugfix: \u5728\u975e git repo \u76ee\u5f55\u4e0b\u8fd0\u884c code \u4f1a\u51fa\u9519\n\n2013-06-09\n~~~~~~~~~~\n\n* ``code end`` \u547d\u4ee4\u9ed8\u8ba4\u5173\u95ed\u5f53\u524d\u5206\u652f (thank guibog)\n\n2013-06-04\n~~~~~~~~~~\n\n* \u589e\u52a0 ``code merge`` \u547d\u4ee4\uff0c\u7b80\u5316 release \u5206\u652f\u7684\u7ba1\u7406\u3002\n\n2013-05-20\n~~~~~~~~~~\n\n* ``code pr -t`` \u53c2\u6570\u652f\u6301\u6307\u5b9a\u76ee\u6807\u4ed3\u5e93\u7684 branch\u3002\n\n2013-04-01\n~~~~~~~~~~\n\n* ``code start`` \u65f6\u5982\u679c\u76ee\u6807 branch \u5df2\u5b58\u5728\uff0c\u4f1a\u63d0\u793a\u662f\u8981\u5207\u6362\u8fd8\u662f\u91cd\u5efa\u3002\n\n2013-03-26\n~~~~~~~~~~\n\n* \u4e0d\u4f7f\u7528 ``commands.getoutput`` \uff0c\u4ee5\u652f\u6301windows", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": "", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "CodeCLI", "package_url": "https://pypi.org/project/CodeCLI/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/CodeCLI/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/CodeCLI/0.1/", "requires_dist": null, "requires_python": null, "summary": "A command line tool for CODE", "version": "0.1" }, "last_serial": 5905408, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "490147544f403ab358b4e28e459bf0a5", "sha256": "57cab17386658012b15d6e360a02619527ddd0c4a8af4b60f1e91f460ce9d74a" }, "downloads": -1, "filename": "CodeCLI-0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "490147544f403ab358b4e28e459bf0a5", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24945, "upload_time": "2014-10-08T13:59:02", "url": "https://files.pythonhosted.org/packages/00/19/2bc02567ac1be024ae6d35e395b106544f6d503cadfed210ddaf59d71d75/CodeCLI-0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f1fd484198b87876374e6fe7c726204", "sha256": "78244d634d7d9985c612f4b8a7fbd3303d84f2af5f8a8ec9e72df8beff47e6eb" }, "downloads": -1, "filename": "CodeCLI-0.1.tar.gz", "has_sig": false, "md5_digest": "3f1fd484198b87876374e6fe7c726204", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15015, "upload_time": "2014-10-08T13:58:58", "url": "https://files.pythonhosted.org/packages/90/69/d93fd6d4555ff95c7e1722b89a4a4be17c14f59575b008968d3eb5609ff8/CodeCLI-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "490147544f403ab358b4e28e459bf0a5", "sha256": "57cab17386658012b15d6e360a02619527ddd0c4a8af4b60f1e91f460ce9d74a" }, "downloads": -1, "filename": "CodeCLI-0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "490147544f403ab358b4e28e459bf0a5", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24945, "upload_time": "2014-10-08T13:59:02", "url": "https://files.pythonhosted.org/packages/00/19/2bc02567ac1be024ae6d35e395b106544f6d503cadfed210ddaf59d71d75/CodeCLI-0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f1fd484198b87876374e6fe7c726204", "sha256": "78244d634d7d9985c612f4b8a7fbd3303d84f2af5f8a8ec9e72df8beff47e6eb" }, "downloads": -1, "filename": "CodeCLI-0.1.tar.gz", "has_sig": false, "md5_digest": "3f1fd484198b87876374e6fe7c726204", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15015, "upload_time": "2014-10-08T13:58:58", "url": "https://files.pythonhosted.org/packages/90/69/d93fd6d4555ff95c7e1722b89a4a4be17c14f59575b008968d3eb5609ff8/CodeCLI-0.1.tar.gz" } ] }