小编Rya*_*yan的帖子

如何组合两个不相关的git存储库,保留历史

我不太了解git.: - /

背景

我有两个不相关的基于git的文档存储库,我想将它们合并到一个存储库中.我想保留原始时间戳(可追溯到2005年)和单个文件历史记录.这两个repos不包含分支,没有文件夹,并且在文件命名方面没有重叠.

在ASCII-land中,它看起来像这样:

REPO A    |-------------------------|
REPO B                    |===============|
Run Code Online (Sandbox Code Playgroud)

重叠表示时间.

目标

我的目标是"拉上"重叠的时间戳,以便两个回购看起来像一个完整的历史记录:

REPO A+B  |-------------------==--=---============|
Run Code Online (Sandbox Code Playgroud)

我试过的

再一次,我不太了解git,所以我可以把事搞砸了.

首先,我尝试将较新的较小的repo添加为较大的旧repo的远程,获取更改并提交结果.在旧的回购后,我结束了所有新的回购变更集中在一个分支:

MERGE  |-------------------------                 -|
                                 \===============/
Run Code Online (Sandbox Code Playgroud)

接下来我尝试了rebasing(with --committer-date-is-author-date),我认为它可以工作,但最后我得到一个长的提交历史,只是将两个repos堆叠在一起.

REBASE |-------------------------===============|
Run Code Online (Sandbox Code Playgroud)

我无法找到一种"重播"组合历史的方法.我真的希望rebase能成为答案.

我看过的答案

git git-rebase

9
推荐指数
2
解决办法
2607
查看次数

使用Gmail API和Google API节点客户端出现错误500 backendError

我正在尝试将新的Gmail APIGoogle API节点客户端配合使用.我从开发人员控制台创建了一个新项目,设置了一个新的"服务帐户"客户端ID,并启用了对API的访问.

作为概念证明,我只是想在我的收件箱中列出线程.当我为API资源管理器启用OAuth 2.0切换并输入我的电子邮件地址时,请求成功,我看到带有数据的JSON响应.

现在我尝试在Node中做同样的事情:

var googleapis = require('googleapis');

var SERVICE_ACCOUNT_EMAIL = '...SNIP...';

// generated by: openssl pkcs12 -in ...SNIP...p12 -out key.pem -nocerts -nodes
var SERVICE_ACCOUNT_KEY_FILE = 'key.pem';
var jwt = new googleapis.auth.JWT(
        SERVICE_ACCOUNT_EMAIL,
        SERVICE_ACCOUNT_KEY_FILE,
        null,
        ['https://www.googleapis.com/auth/gmail.readonly']);

googleapis
    .discover('gmail', 'v1')
    .execute(function(err, client) {

        jwt.authorize(function(err, result) {
            if(err) console.error(err);
            else console.log(result);

            client.gmail.users.threads.list()
                .withAuthClient(jwt)
                .execute(function(err, result) {
                    if(err) console.error(err);
                    else console.log(result);
            });
        });
    });
Run Code Online (Sandbox Code Playgroud)

首先,我打印authorize()调用的结果,看起来它返回一个令牌,所以我想我已经正确设置了所有OAuth的东西:

{ access_token: '...SNIP...',
  token_type: 'Bearer',
  expires_in: 1404277946,
  refresh_token: …
Run Code Online (Sandbox Code Playgroud)

google-api-nodejs-client gmail-api

6
推荐指数
1
解决办法
2949
查看次数

如何构建具有命名出口的多记录Ember应用程序?

我正在尝试构建类似Tweetdeck的UI,以便将中央库中的项目分类.我真的需要帮助围绕使用Ember路由器的规范方式.

基本上,我有一个搜索UI,允许用户同时打开零个或多个类别.类别显示项目列表,用户可以从右侧的中央库添加到这些项目.通过完全忽略路由器和URL,我设法将一个半工作的概念证明破解.现在我想回去尝试以Ember的方式去做.下面是我想要完成的高级草图:

在此输入图像描述

如果我理解正确,所需的URL方案将是当前打开的模型ID的逗号分隔列表.我很清楚如何从另一个问题中解决这个问题,如何设计路由器以便URL可以加载多个模型?.

不幸的是,有一些我不理解的概念:

  • 如何构建我的模板和路由器,以便使用自己的模型和控制器显示库?我假设命名{{outlet}}是要走的路,但是在renderTemplate配置方面我完全迷失了.或许我应该使用{{render}}?在任何一种情况下,我都不了解路由器在这种情况下的作用.

编辑1/28:我添加了一个更新的小提琴,其中包括一个独立的 library路线/模板,并记录了我尝试将其渲染到categories模板中的文档.当我试图将它嵌入另一条路线时,Ember如何期望我将库模板作为模型?我曾尝试{{outlet}}使用renderTemplate{{render}},但在这两种情况下,我都被困在指定模型时.

使用renderTemplate:

App.CategoriesRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render('categories');
        this.render("library", {
            into: "categories",
            outlet: "library",
            controller: "library",
        });
    },
});
Run Code Online (Sandbox Code Playgroud)
  • 当我的控制器收到打开类别的请求时,如何将其传达给路由器?哈希路径如何更新?谁负责加载适当的模型?我假设我应该从transitionTo或开始transitionToRoute,但我也不了解路由器的角色.具体问题:

    1. 如何从URL反序列化多个逗号分隔的模型?我只是分开逗号还是有更好的方法?

    2. 一旦我从URL获取ID,如何让我的模型钩子返回多个记录?我只是将它们全部塞进Ember阵列吗?

    3. 当控制器获取要打开的新记录的ID时,如何将其与路由器通信?

我试图自己解决这个问题并多次阅读Ember文档,但我担心它只是在我脑海中.我把一个放在一起最小的(目前无功能的)小提琴概述我的想法并指出我被困在哪里.我很感激任何人都可以提供帮助.

ember.js ember-router

5
推荐指数
1
解决办法
179
查看次数