小编Mar*_*idt的帖子

npm安装没有package.json的git存储库

我有一个项目依赖于几个第三方库.

我的package.json看起来像:

"dependencies": {
    "vendor-name": "git://github.com/vendor/name.git#v1.1",
    ...
}
Run Code Online (Sandbox Code Playgroud)

只要vendor-name存储库包含一个,就可以工作package.json.

如果没有这样的文件,我得到:

npm ERR! path /var/folders/0l/temp-folder/package.json
npm ERR! code ENOENT
Run Code Online (Sandbox Code Playgroud)

实际上,a npm install git://github.com/vendor/name.git#v1.1也不起作用.

所以我的问题是:有没有办法安装(包含)git存储库(在dependencies)没有package.json

git npm

33
推荐指数
2
解决办法
2万
查看次数

Git推送具有相同文件的新分支,再次上传所有文件

给出以下场景.

  1. 创建新分支
  2. 提交一个10MB的文件
  3. Git push(上传10MB文件)
  4. 创建一个新分支(孤儿)
  5. 提交相同的10mb文件(不做任何更改,相同的对象sha hash)
  6. Git push再次上传10MB文件

我的期望是,已经上传的文件不会再次使用上传git push.但实际发生的是,当一个新的分支被创建时,所有文件(即使是数千个较小的源文件,而不是一个10MB文件)将一次又一次地上传.

我的问题:如何让Git检测到10mb文件已经上传?你知道一个解决方法/修复方法,让Git在推送提交时检测服务器上已有的对象吗?Git通过其sha检测文件,因此它应该能够检测到提交树中的某些文件已经存在于服务器上.

可能的用例:我有两个完全不同的分支,但是在这两个分支中共享一些公共文件.当我推动一个分支时,我不想在推送第二个分支时再次上传公共文件.

实际使用案例:我使用Python脚本和一些较小的数据集(1MB - 10MB)进行了大量的机器学习实验.每次我开始实验时,我都会将所有必要的实验文件添加到新的Git树中,并在新的提交中使用该树而不进行分支.那个提交在空中完全免费挂起,然后用新的Git引用引用(例如refs/jobs/my-experiment-name).当我现在有几个相同文件的两个实验(以及两个引用)时,当我推送这些引用时,Git再次推送所有对象.我的带宽很低,这确实减慢了我的工作量.

$ mkdir git-test && cd git-test
$ git init
$ git remote add origin git@gitlab.com:username/projectname.git

# create dummy 10MB file
$ head -c 10000000 /dev/urandom > dummy

$ git add dummy
$ git commit -m 'init'

# first push, uploads everything - makes sense
$ git push origin master
Counting objects: 3, done.
Delta compression using up to 6 threads.
Compressing …
Run Code Online (Sandbox Code Playgroud)

git push

8
推荐指数
1
解决办法
1770
查看次数

标签 统计

git ×2

npm ×1

push ×1