Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I' using windows, git bash prompt

I'm trying to use the git archive command with bitbucket

and I receive the error remote: "git upload-archive: archiver died with error"

Any ideas ?

git archive --remote=ssh://[email protected]/username/reponame.git --format=tar --output="file.tar"

I have created all SSH keys and public keys etc and even tested ssh -v [email protected] and it works fine

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.2k views
Welcome To Ask or Share your Answers For Others

1 Answer

You cannot get just an archive without precising the tree-is you want to get, when you are using --remote

git archive --remote=ssh://[email protected]/username/reponame.git --format=tar --output="file.tar" master

Would work, mentioning a name of a branch.
That would work too with the name of a tag.

However, according to this thread, a commit ID would not work:

Is there a reason git-archive requires a named ref rather than just a commit (or tree) ID?

Yes; generally git repositories do not allow clients to access arbitrary sha1s. Instead, they require that the requested objects be accessible by a ref.

git-archive was not properly enforcing this, and was changed recently to allow only refs by name, as well as sub-trees of refs (e.g., HEAD:subdir/).
That means we do disallow an arbitrary commit or tree sha1, even if it is reachable from the advertised refs.

would it be difficult to patch git-upload-archive to use the IDs?
I could use tags for the ref, but in my case would result in almost every commit being a tag which seems wasteful.

Doing it right is a bit expensive, because in the general case (somebody requested a tree sha1), we would need to traverse every tree of every commit to see if it is reachable.

We could potentially implement a more restricted set of rules, allowing "<commit>:<subdir>" and checking that <commit> is reachable.
That would disallow an arbitrary tree sha1, but I suspect it would cover the common use case (i.e., you want to get the tree, or even a subtree, of a particular revision).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...