-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gitweb link_files only works for top-level projects #123
Comments
Note that we have a "global" configuration for all our repos:
However, also if I "hard-code" the project to the sub-folder like this:
.. the links still end up pointing to the top-level. In any case, it would be nice if the repo_name variable would end up pointing to "funky/fizzle", as it also appears in the subject of the mail. |
@tfnico, we have no installations like yours. pull requests are very apprepriated. |
I don't have a pull request just yet, but the fix is simple: for gitweb, diff_to_html.rb uses Git.repo_name instead of config['gitweb']['project'](which means the setting was totally ignored). See the diff below... --- /usr/lib/ruby/gems/1.9.1/gems/git-commit-notifier-0.11.2/lib/git_commit_notifier/diff_to_html.rb.orig 2012-04-02 15:44:09.394652993 -0400
+++ /usr/lib/ruby/gems/1.9.1/gems/git-commit-notifier-0.11.2/lib/git_commit_notifier/diff_to_html.rb 2012-04-02 16:32:50.919423617 -0400
@@ -161,7 +161,7 @@
# TODO: these filenames, etc, should likely be properly html escaped
if config['link_files']
file_name = if config["link_files"] == "gitweb" && config["gitweb"]
- "<a href='#{config['gitweb']['path']}?p=#{Git.repo_name}.git;f=#{file_name};h=#{@current_sha};hb=#{@current_commit}'>#{file_name}</a>"
+ "<a href='#{config['gitweb']['path']}?p=#{config['gitweb']['project']};f=#{file_name};h=#{@current_sha};hb=#{@current_commit}'>#{file_name}</a>"
elsif config["link_files"] == "gitorious" && config["gitorious"]
"<a href='#{config['gitorious']['path']}/#{config['gitorious']['project']}/#{config['gitorious']['repository']}/blobs/#{branch_name}/#{file_name}'>#{file_name}</a>"
elsif config["link_files"] == "cgit" && config["cgit"]
@@ -448,7 +448,7 @@
def markup_commit_for_html(commit)
commit = if config["link_files"]
if config["link_files"] == "gitweb" && config["gitweb"]
- "<a href='#{config['gitweb']['path']}?p=#{Git.repo_name}.git;a=commitdiff;h=#{commit}'>#{commit}</a>"
+ "<a href='#{config['gitweb']['path']}?p=#{config['gitweb']['project']};a=commitdiff;h=#{commit}'>#{commit}</a>"
elsif config["link_files"] == "gitorious" && config["gitorious"]
"<a href='#{config['gitorious']['path']}/#{config['gitorious']['project']}/#{config['gitorious']['repository']}/commit/#{commit}'>#{commit}</a>"
elsif config["link_files"] == "trac" && config["trac"] This has the potential to break projects that don't have the project setting set up properly, which would be a config error. Maybe a better fix would be to use Git.repo_name is the config param isn't set, but I'm not very Ruby-literate so don't expect this from me... Thanks |
I see this is already fixed in Git. Thanks |
@dermoth Thanks for suggesting the fix. Are you saying in your last comment that the issue has been since fixed in the git-commit-notifier itself? |
Yes, if you clone from git and build it you will have this fix, as well as proper email ordering when you push more than one commit at once. |
Closed because already fixed. |
I didn't notice anything being fixed after upgrading to 0.11.4, but ended up just hacking it into lib/git_commit_notifier/git.rb like this:
Only works if gitweb is running in /var/git, of course. |
Another hack for gitweb: in lib/git_commit_notifier/diff_to_html.rb:491, I hardcoded in gitweb, because even though my config.gitweb.project is empty, I still want links on the commits:
This is all very hacky, of course, and I don't have the Ruby-fu to make something re-usable. But maybe someone else who comes along and has this configuration can make it work. |
Yup, this issue is still happening in 0.11.4 - the fix as per @dermoth's patch indeed seems to have been applied before 0.11.4, but also only seems to be valid for configurations where one specific repository is configured for the notifier (in gitweb:project). Like @tfnico, we use the "global" configuration, and links are incorrect in such cases. gitweb: |
@gjoseph Any suggestions? |
I wish. I can't think of anything that would make sense for everyone, other than, perhaps, introduced a config variable such as "repos_root", i.e where all repos are. And even that might not work for everyone. How about looking at gitweb's projects.list file ? |
Can you inform about its location and format? Gist is very apprepriated. This is because I have no Gitweb installations. |
The location of the file is specified in gitweb.conf ($project_list); or, as I've just realized not used. In any case, one specifies a $projectroot in gitweb.conf, which is the paths under which all repos are. If $project_list is specific, the format of the file is simply one repo per line, with the path (relative to $projectroot) to each repo/.git folder (in my case, these are bare repos). If $project_list is not specified, gitweb scans $projectroot to find all repos. Example file: So seeing this, my suggestion would be to
|
Will be reviewed and feature planned. |
thanks ! |
in my setup i see that ${repo_name} is not getting expanded as the project name for gitweb URL's. is this problem part of this issue or i should open a new issue? |
We sometimes like to organize our repositories into folders, but the notifier doesn't produce links for these correctly.
Example-wise, consider a directory that contain three git repos like this:
The respective urls for these are:
The git-commit-notifier produces links to these repos just fine.
However, if we want to organize fizzle.git and goggle.git together in a directory "funky" like this:
.. git-commit-notifier keeps on generating links the way they were before, instead of how they should be:
The text was updated successfully, but these errors were encountered: