How to find the git commit id of an included crate? - rust-cargo

I have included a crate as dependency in my Cargo.toml as:
bellman_ce = "=0.3.3"
How do I find which commit id this version of the package points to?
Unfortunately, github repo is not tagged by version number.

You can't. Crates on crates.io don't need to be built from a Git repo, and there is no built-in way to determine what commit a crate was built from. Most crates tag commits in their history where versions came from, but in this case looking at the Git history of Cargo.toml is your only option.

I'm struggling with the same problem my self. I cannot find a way to get the exact commit id. However, it looks like you can go to the crates.io versions page (e.g., https://crates.io/crates/flexi_logger/versions) and there it will show when each version was published. You might be able to find the commit that corresponds to the version by searching the git history and try to find a commit around the time when the version was published.

I think what you're looking for is in the .cargo_vcs_info.json file from the crate. It's created as part of cargo package and is documented here: https://doc.rust-lang.org/cargo/commands/cargo-package.html#cargo_vcs_infojson-format. If you can find the source for the crate in question in your $HOME/.cargo/registry/src it should be there.

Related

How see which version of Rails a particular commit was applied to?

Frequently when researching a problem, I come across a commit in Rails that addresses the issue.
But how does someone see which version of Rails first incorporated that fix?
For example, an issue with a missing /tmp/pid folder was fixed in this Rails commit:
https://github.com/rails/rails/commit/70e6ff2ed8596eb9bd6dcce87cb3f14015638d70
But how can I see which version of Rails included that fix?
To see what specific version includes a certain commit you need to look at the tags in the repository:
max#pop-os ~/p/rails> git tag --contains 70e6ff2ed8596eb9bd6dcce87cb3f14015638d70
v6.0.1
v6.0.1.rc1
v6.0.2
v6.0.2.1
v6.0.2.2
v6.0.2.rc1
v6.0.2.rc2
v6.0.3
v6.0.3.1
v6.0.3.2
v6.0.3.3
v6.0.3.4
v6.0.3.rc1
git branch --contains <commit id> can also be used to find new commits that are not yet tagged. Such as commits on master that haven't yet been "released".
To do this you first need to clone the repository off Github and fetch all the branches (or a least the stable branches).

Github as artifact repo in mlflow

Can we use github as one of the options in artifact repository in additions to the object storage support.
Github seems to be a natural way to capture changes in code between different runs/experiments, this will also give a way of tying down the revision of code used in a registered model.
Model version --> runs --> github version. Nothing golden than this.
Thoughts ?
If you run an experiment, while the source from which you ran is in GitHub, that commit is tied to the run.
Registering the model with that version will give the git commit with which the model was run and the subsequent registered version. See both images below.
The first shows the run with a git commit; the second shows that model is registered, with a clickable link (LOCAL_REGISTRY) from the registry UI back to the run UI with its git commit.

Carthage: How to get the very latest version of a given repository?

The Cartfile documentation makes the assertion:
If no version requirement is given, any version of the dependency is allowed.
with the contradictory example:
# Use the latest version
github "jspahrsummers/xcconfigs"
Furthermore, it is not stated, but from testing, I infer that "latest" is actually the version of the latest tag. Is this interpretation correct? And if so, how does one specify the very latest commit - do you have to manually check and specify the latest commit, or is there a simpler way?
The documentation states
Carthage supports several kinds of version requirements:
>= 1.0 for “at least version 1.0”
~> 1.0 for “compatible with version 1.0”
== 1.0 for “exactly version 1.0”
"some-branch-or-tag-or-commit" for a specific Git object (anything allowed by git rev-parse)
so I believe
github "jspahrsummers/xcconfigs" "HEAD"
should work as expected, since "HEAD" is a valid argument for git rev-parse
Alternatively
github "jspahrsummers/xcconfigs" "master"
or any other branch
Simply github "jakecraige/RGB" will yell No tagged versions found for github "jakecraige/RGB"
Better is to use github "jakecraige/RGB" "master"
You may want to read Carthage Tutorial: Getting Started
branch name / tag name / commit name means “Use this specific git branch / tag / commit”. For example, you could specify master, or a commit has like 5c8a74a.
This was answered by mdiep on Carthage's github page:
The latest version refers to something that has an actual version—a release or tag. If you want the most latest commit, you need to specify the branch you want to pin to.
Just leave the version number out. Mine looks like this and it works:
github "Alamofire/Alamofire"
github "auth0/JWTDecode.swift"

Xcode commit issue with git

I'm having an issue with Xcode trying to commit some changes to a Git repo. Today, I created a branch from master in order to work on future updates of an app while keeping the ability to fix the release version.
The problem I have occurs when committing changes. I get the following error message:
error: pathspec 'Furtivus.xcodeproj' did not match any file(s) known to git.
The thing is, back in the early days of the project, I changed the name of the bundle and the project and it is no longer called "Furtivus". I've tried looking into the .git directory where my local repository is located. I've also tried looking for any files containing "Furtivus" on my mac with no results. I can't find where to change this name.
Obviously Git is trying to find the old project that was renamed, so how do I change that?
I've done a lot of searching, in the documentation regarding Git, and on Stackoverflow and nothing seems to cover how to handle Git and a project name change.

How do I tag my git repository using the GitHub Mac application?

I pretty new to GitHub and personally did not have time to learn too much command line. I prefer using the GitHub Mac app for my personal projects and I was curios if I can add tags with it.
Basically I just want to tag my projects v0.1 and so on. I'm not even sure this is the best way to do it.
From VonC's answer to the same question asked on SuperUser:
Both in their announcement and in the help section, this (tag) doesn't seem to be available (at the time of the writing of this answer).
That means GitHub for Mac doesn't manage yet the tags namespace (refs/tags), and that you need to tag manually, and then git push --tags to GitHub also manually.
Though that was a year ago, there's still nothing to indicate that tags are supported. There's still no mention in the help section, subsequent blog posts about it don't mention tags, nor do the release notes (though they only cover relatively recent versions).
Unfortunately, Github Client for Mac still doesn't handle tags.
Neither to create them or nor to retrieve them
The Github website on its side propose not only to retrieve tagged commits, but also show them as releases and propose automaticly generated zip and tar.gz bundles of the related source code.
see:
https://help.github.com/articles/working-with-tags
https://help.github.com/articles/about-releases
https://github.com/blog/1547-release-your-software
https://help.github.com/articles/creating-releases
The good news is that tag are pulled to you local repository when doing a "sync" or a "pull" from Github Client for Mac
As #blahdiblah said, you'll have to go through command lines to manage tags locally
The "official" documentation regarding tag manipulations in command line is there:
http://git-scm.com/book/en/Git-Basics-Tagging
Usage is very simple:
git tag list tags
git tag -a v1.4 -m 'my version 1.4' create a tag with a description
git show v1.4 show informations about a tag
git push origin --tags push last commits and the tags
To create a tag manually via the command line:
open Terminal and navigate to your repository (either via cd or just drag in the folder from Finder)
use the following commands:
git remote (displays the name of your remote, for example YourRemote)
git tag -a v1.2 -m 'tagging Version 1.2' (creates tag v1.2 from current branch)
git push YourRemote v1.2 (pushes the tag you've created to YourRemote)
http://pinkstone.co.uk/how-to-tag-a-release-in-git/

Resources