問題タブ [gitweb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - gitwebクエリ文字列をcgitクエリに変換する
プログラムでgitweb形式のクエリ文字列をcgitクエリ文字列にマッピングして、ウェブのあちこちに散らばっているリポジトリを指す古いgitwebベースのURLを壊さずに、完全にcgitに移行しようとしています。次のような正規表現ベースのURL書き換えルールを見てきました。
http://www.clearchain.com/blog/posts/cgit-upgrade-gitweb-retired
しかし、私はクエリ文字列の変数を実際に理解して正しく理解しようとしています。mod_rewriteなどの再マッピングではなく、小さなCGIプログラムを使用します。特に、、、、およびハッシュのセマンティクスとh
、それらがさまざまなタイプのクエリのcgitのクエリ変数にどのようにマップされるかを理解していません。hb
hp
id
それらに精通している人は私に記入したり、良いリソースを教えてくれますか?
git - git git web のリポジトリを一部のユーザーにのみ表示する
最初は1人の開発者だけでgitサーバーを実装しようとしているので、完全にアクセスできるのは1人だけです。私はすでにこれを行うことに問題はありません。このユーザーは、ssh アクセスで作業を行っています。
そして、プロジェクトへの読み取り専用アクセスを、Apacheで実行されているある種のGUI(gitweb、gitlist、gitalist ...)と共有したいと思います。これにより、選択したリポジトリを特定のユーザーや完全に公開することができます。何かのようなもの:
- Repo x - user1 と user3 の読み取りアクセス
- Repo y - user1 と user2 の読み取りアクセス
- Repo z - すべてのユーザーの読み取りアクセス。
このようなことを行うための適切な解決策を見つけることができません。
認証されたユーザーにのみリポジトリを表示するための認証方法に関するドキュメントを見つけることができますが、Apache で実行されている GUI の 1 つを使用して、認証された各ユーザーにいくつかのリポジトリのみを表示するためのリポジトリのきめ細かい制御はできません。
webmin gitモジュールを使用してdavでgitwebを試しましたが、認証したユーザーがすべてではなく一部のリポジトリにしかアクセスできない場合でも、すべてのリポジトリがgitwebに表示されます。
Web サーバーはユーザー git で suexec を実行しており、リポジトリへの完全な読み取りアクセス権を持っています。
このようなものをどのように実装する必要がありますか?多分いくつかのフック?
さらに、ユーザーがプロジェクトのパッケージ化された tar.gz をダウンロードできるようにするオプションにのみ興味があります。ユーザーがプロジェクトと共同作業できるようにする予定はありません。多分解決策はこれ以外です。プロジェクトに関するフィードバックを受け取ることができるようにするために、trac システムがより良い解決策である場合も興味深いものになる可能性があります。
git - Ubuntu: gitweb は常に /var/cache/git 内のプロジェクトを探します (「404 - プロジェクトが見つかりません」)
Ubuntu 12.04 (64 ビット) サーバーにgitwebをインストールし、変数$projectroot
を/usr/share/gitweb/gitweb.cgi
以外のディレクトリに変更した後でも/var/cache/git
、プロジェクトは で検索され/var/cache/git
ます。
これは、Ubuntu のgitwebパッケージ (1.7.9.5) で発生し、Git のリポジトリのクローンを作成し、最新の安定したブランチ (1.8.0.1) をコンパイルします。
この問題は、Apache の gitweb サイトで "404 - プロジェクトが見つかりません" として発生することもあります/var/cache/git
。
perl - ターミナルとは異なるGitwebApache出力
Apacheは次のように構成されています。
Gitwebをセットアップしようとしていますが、恐ろしい404 - No projects found
問題が発生し続けます。通常、これはパーミッションエラーであるため、パーミッションを持たないperlによって何かが印刷されたかどうかを確認したかったので、このコマンドを使用してターミナルから実行しました。
スクリプトは、すべてのリポジトリが適切にリストされた(つまり、404がない)HTMLをエコーしました。
ここに質問があります:なぜ同じスクリプトがApacheから実行され、端末の動作が異なるのでしょうか?
git - gitweb およびプロジェクトごとの http 認証
認証されたすべてのユーザーがアクセスできるApache vHostでgitwebを正常にセットアップしました。
サーバー自体は、https を介していくつかの git リポジトリを提供し、ユーザー/グループごとにそれらのプロジェクトにアクセスできます。たとえば、test1.git はグループ test1 のみが読み取り/書き込み可能であり、test2.git はグループ test2 のみが読み取り/書き込み可能です。
また、これらのグループのみが、gitweb インターフェイスで対応する git リポジトリを参照できるようにしたいと考えています。gitweb に対してこれらの詳細なアクセス権を持つことは可能ですか?
そうでない場合、プロジェクトごとに基本的なhttp認証(およびおそらく後でldap認証)を処理できるgit用の軽量Web GUIがありますか?
編集 物事を明確にするために(コメントから混乱があるように見えるため):例:
10 個のリポジトリ (test1、test2、... test10) があります。
ユーザーlockdocはグループtest1およびtest3に属しています
ユーザー名lockdocとパスワードを使用して http で認証されると、このユーザーは git プロジェクトtest1とtest3のみを表示でき、他のプロジェクトを閲覧/表示することはできません
これはすでに実装されているため、Web インターフェイスを介して書き込む (プッシュする) 必要はありません。
git - SourceSource Wiki:gitリポジトリのソースへの永続的なリンクを追加する方法
sourceforgeプロジェクトのWikiを開始しました。ホームページに、gitツリーのコードサンプルへのリンクをいくつか掲載しました。私は頻繁にコミットすると、リンクは廃止されます。
マスターブランチに最新のhttpリンクを配置するにはどうすればよいですか?
リンクの例を次に示します。https://sourceforge.net/p/jdcf/code/ci/414b9c83de3a5a9f34303c4bb888b715ff6bbecb/tree/src-demo_01/org/dcf/demo/consumer/Component.java
/414b9c83de3a5a9f34303c4bb888b715ff6bbecb/
は私が思うバージョンです、私はそれをに置き換えたいと思いますLATEST
。どうすればいいですか?
git - サブディレクトリの gitweb スナップショット
URL を呼び出すと、から始まるhttp://<gitweburl>/gitweb.cgi?p=<repo>;a=tree;f=<subdir>;hb=HEAD
ツリーが表示されます。<repo>
<subdir>
URL を呼び出すhttp://<gitweburl>/gitweb.cgi?p=<repo>;a=snapshot;f=<subdir>;hb=HEAD
と 404 が生成されます。
URL を呼び出すと、HEAD リビジョンhttp://<gitweburl>/gitweb.cgi?p=<repo>.git;a=snapshot;h=HEAD
のスナップショットが提供されます。<repo>
Gitweb にサブディレクトリから始まるスナップショットを作成させる正しい構文が見つかりません。私は次のことにつながる何かを意味します:$ git archive --format=tar --remote=<gituser>@<gitserver>:<repo> HEAD:<subdir>
私は単純に URL を呼び出してみましhttp://<gitweburl>/gitweb.cgi?p=<repo>;a=snapshot;h=HEAD;f=<subdir>
たが、その結果、リポジトリ全体を含むスナップショット アーカイブが作成されます。
Gitweb Web インターフェイスをクリックした後、「ツリー」ビューに変更し、<subdir>
「スナップショット」に移動してからクリックすると、次のような URL が使用されることがわかりました。
http://<gitweburl>?p=<repo>;a=snapshot;h=42a6503da6aaedc92bb3543e0b0de9b2de0aaae9;sf=tgz
これはまさに私が望むものを提供しますが、このハッシュパラメーターh=...
が何であるかわかりません。コミットIDではありません-チェックしました。何らかの方法で を識別する必要があります<subdir>
。しかし、それがあったとしても、これはまだ役に立ちません。なぜなら、スナップショットを開始する/含むだけが必要な人<subdir>
は、通常、このハッシュを知らないからです。
Gitweb 経由でサブディレクトリのスナップショットを取得する方法について何か考えはありますか? 前もって感謝します!
添加:
ちょうど見つけた:可視にh=42a6503da6aaedc92bb3543e0b0de9b2de0aaae9
関連付けられたハッシュ値です。<subdir>
$ git ls-tree -r -t HEAD
したがって、これらの2つのコマンド:
$ git archive --format=tar --remote=<gituser>@<gitserver>:<repo> HEAD:<subdir>
$ git archive --format=tar --remote=<gituser>@<gitserver>:<repo> 42a6503da6aaedc92bb3543e0b0de9b2de0aaae9
私がそれを考えさせて、同等である同じことをしてください。それでも、ハッシュをに置き換えることはできません。この URL を呼び出すと、「400 - 無効なハッシュ パラメータ」という結果になるため、ここでは実際の進行はありません。HEAD:<subdir>
42a6503da6aaedc92bb3543e0b0de9b2de0aaae9
http://<gitweburl>?p=<repo>;a=snapshot;h=42a6503da6aaedc92bb3543e0b0de9b2de0aaae9;sf=tgz
HEAD:<subdir>
poke で提案されているように、使用するクイックアンドダーティハックURL http://<gitweburl>/gitweb.cgi?p=<repo>;a=snapshot;h=HEAD;f=<subdir>
git - gitweb で master 以外のブランチを表示するにはどうすればよいですか?
master 以外のブランチにあるファイルに加えた変更を確認できるようにしたいと考えています。これを行う方法はありますか?
さらに、たとえば MyBranch の HEAD と master の HEAD など、複数のブランチのヘッド間で差分を取ることができれば、非常に便利です。
git - ファイルが変更されていないのに git が時々ファイルが変更されたと表示するのはなぜですか?
DragonFly BSD は git を SCM として使用し、カーネルとユーザーランド全体の両方に対して単一のリポジトリとブランチを使用します。
2011 年 11 月 26 日、ほとんどのファイルがまったく変更されていないにも関わらず、誰かが何らかの形でリポジトリ内のすべてのファイルを変更するコミットを行いました。
これは、2011 年 11 月26 日の問題のあるコミットです
。
それ以来、いくつかのツールで、リポジトリ内の任意のファイルのファイル履歴を見ると、そのコミットで 2011 年 11 月 26 日に変更されたことがわかりますが、一部のツールでのみ表示され、その他。
たとえば、偽の 2011-11-26 コミットは、次のツールでは表示されません。
git log sys/sys/sensors.h
https://github.com/DragonFlyBSD/DragonFlyBSD/commits/master/sys/sys/sensors.h
ただし、偽のコミットは次のように誤って表示されます。
git whatchanged --pretty=%at sys/sys/sensors.h
1322296064 の時間は偽物であり、ファイルが
/li>A
削除されずに追加されたこと、およびdst
sha1 が同じであることに注意してください。ファイルが削除されておらず、まだ同じsha1を持っていると考えるとほとんど意味がありませんが、src
sha1が常にそのような偽のコミットであることを示す別のより代表的な例:0000000...
dst
http://gitweb.dragonflybsd.org/dragonfly.git/history/HEAD:/sys/sys/sensors.h
私の質問は次のとおりです。
そもそも削除せずにファイルを追加することができたのはなぜですか? /そのようなことを許可するのはgitのバグですか?
このような偽のコミットを圧縮する (そしてユーザーから隠す) ツールとそうでないツールがあるのはなぜですか?
と同じように、実際には変更されていないファイルでそのような偽のコミットを作成して無視する
git-whatchanged
方法はありますか?gitweb
git-log
github
git - gitweb では、マージされたコミットで diff を実行するときに親を設定するにはどうすればよいですか?
この質問はgitではなくGITWEBに関するものです。私は git でこれを行う方法を知っていますが、gitweb で実行できるようにしたいと考えています。
次のようなツリーがあるとします。
B と D の違いを確認できるようにしたいと思います。これにより、A & B と C & D の変更が表示されるはずです。しかし、git web (コミット ハッシュを指定) を使用すると、D の内容が表示されるだけです。マージコミットで commitdiff を使用するときに親を設定する方法はありますか?