Go to file
shejialuo d996b4475c ref: check whether the target of the symref is a ref
Ideally, we want to the users use "git symbolic-ref" to create symrefs
instead of writing raw contents into the filesystem. However, "git
symbolic-ref" is strict with the refname but not strict with the
referent. For example, we can make the "referent" located at the
"$(gitdir)/logs/aaa" and manually write the content into this where we
can still successfully parse this symref by using "git rev-parse".

  $ git init repo && cd repo && git commit --allow-empty -mx
  $ git symbolic-ref refs/heads/test logs/aaa
  $ echo $(git rev-parse HEAD) > .git/logs/aaa
  $ git rev-parse test

We may need to add some restrictions for "referent" parameter when using
"git symbolic-ref" to create symrefs because ideally all the
nonpseudo-refs should be located under the "refs" directory and we may
tighten this in the future.

In order to tell the user we may tighten the above situation, create
a new fsck message "symrefTargetIsNotARef" to notify the user that this
may become an error in the future.

Mentored-by: Patrick Steinhardt <ps@pks.im>
Mentored-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: shejialuo <shejialuo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-11-21 08:21:33 +09:00
.github
Documentation ref: check whether the target of the symref is a ref 2024-11-21 08:21:33 +09:00
block-sha1
builtin ref: support multiple worktrees check for refs 2024-11-21 08:21:32 +09:00
ci Merge branch 'ja/doc-synopsis-markup' 2024-10-10 14:22:24 -07:00
compat Merge branch 'jk/fsmonitor-event-listener-race-fix' 2024-10-15 16:56:43 -04:00
contrib
ewah
git-gui
gitk-git
gitweb
mergetools Merge branch 'ak/typofix-2.46-maint' 2024-10-04 14:21:40 -07:00
negotiator
oss-fuzz
perl Merge branch 'ak/typofix-2.46-maint' 2024-10-04 14:21:40 -07:00
po Merge branch 'l10n-de-2.47' of github.com:ralfth/git 2024-10-06 12:06:21 +08:00
refs ref: check whether the target of the symref is a ref 2024-11-21 08:21:33 +09:00
reftable Merge branch 'ps/reftable-alloc-failures' 2024-10-10 14:22:25 -07:00
sha1
sha1collisiondetection@855827c583
sha1dc
sha256
t ref: check whether the target of the symref is a ref 2024-11-21 08:21:33 +09:00
templates
trace2 Merge branch 'ak/typofix-2.46-maint' 2024-10-04 14:21:40 -07:00
xdiff
.cirrus.yml
.clang-format
.editorconfig
.gitattributes
.gitignore
.gitlab-ci.yml
.gitmodules
.mailmap
.tsan-suppressions
CODE_OF_CONDUCT.md
COPYING
GIT-VERSION-GEN Start the 2.48 cycle 2024-10-10 14:22:30 -07:00
INSTALL
LGPL-2.1
Makefile Merge branch 'ps/reftable-alloc-failures' 2024-10-10 14:22:25 -07:00
README.md
RelNotes Start the 2.48 cycle 2024-10-10 14:22:30 -07:00
SECURITY.md
abspath.c
abspath.h
aclocal.m4
add-interactive.c
add-interactive.h
add-patch.c
advice.c
advice.h
alias.c
alias.h
alloc.c
alloc.h
apply.c
apply.h
archive-tar.c
archive-zip.c
archive.c Merge branch 'rs/archive-with-attr-pathspec-fix' 2024-10-04 14:21:40 -07:00
archive.h
attr.c
attr.h
banned.h
base85.c
base85.h
bisect.c
bisect.h
blame.c
blame.h
blob.c
blob.h
bloom.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
bloom.h
branch.c submodule: fix leaking submodule entry list 2024-09-30 11:23:03 -07:00
branch.h
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle-uri.c bundle-uri: plug leak in unbundle_from_file() 2024-10-10 11:47:24 -07:00
bundle-uri.h
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cbtree.c
cbtree.h
chdir-notify.c
chdir-notify.h
check-builtins.sh
checkout.c
checkout.h
chunk-format.c
chunk-format.h
color.c
color.h
column.c
column.h
combine-diff.c
command-list.txt
commit-graph.c
commit-graph.h
commit-reach.c
commit-reach.h
commit-slab-decl.h
commit-slab-impl.h
commit-slab.h
commit.c
commit.h
common-main.c
config.c
config.h
config.mak.dev
config.mak.in
config.mak.uname
configure.ac
connect.c
connect.h
connected.c
connected.h
convert.c
convert.h
copy.c
copy.h
credential.c Merge branch 'ds/background-maintenance-with-credential' 2024-09-30 16:16:16 -07:00
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c
date.h
decorate.c
decorate.h
delta-islands.c
delta-islands.h
delta.h
detect-compiler
diagnose.c
diagnose.h
diff-delta.c
diff-lib.c Merge branch 'jk/output-prefix-cleanup' 2024-10-10 14:22:30 -07:00
diff-merges.c
diff-merges.h
diff-no-index.c
diff.c Merge branch 'jk/output-prefix-cleanup' 2024-10-10 14:22:30 -07:00
diff.h Merge branch 'jk/output-prefix-cleanup' 2024-10-10 14:22:30 -07:00
diffcore-break.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
diffcore-rename.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
diffcore-rotate.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
diffcore.h diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
dir-iterator.c
dir-iterator.h
dir.c Merge branch 'ps/leakfixes-part-7' 2024-10-02 07:46:26 -07:00
dir.h
editor.c
editor.h
entry.c
entry.h
environment.c
environment.h
exec-cmd.c
exec-cmd.h
fetch-negotiator.c
fetch-negotiator.h
fetch-pack.c
fetch-pack.h
fmt-merge-msg.c
fmt-merge-msg.h
fsck.c
fsck.h ref: check whether the target of the symref is a ref 2024-11-21 08:21:33 +09:00
fsmonitor--daemon.h
fsmonitor-ipc.c
fsmonitor-ipc.h
fsmonitor-ll.h
fsmonitor-path-utils.h
fsmonitor-settings.c
fsmonitor-settings.h
fsmonitor.c
fsmonitor.h
generate-cmdlist.sh
generate-configlist.sh
generate-hooklist.sh
gettext.c
gettext.h
git-archimport.perl
git-compat-util.h
git-curl-compat.h
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-filter-branch.sh
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh
git-p4.py
git-quiltimport.sh
git-request-pull.sh
git-send-email.perl
git-sh-i18n.sh
git-sh-setup.sh
git-submodule.sh
git-svn.perl
git-web--browse.sh
git-zlib.c
git-zlib.h
git.c Merge branch 'ps/leakfixes-part-7' 2024-10-02 07:46:26 -07:00
git.rc
gpg-interface.c
gpg-interface.h
graph.c Merge branch 'jk/output-prefix-cleanup' 2024-10-10 14:22:30 -07:00
graph.h
grep.c
grep.h
hash-lookup.c
hash-lookup.h
hash.h hash.h: set NEEDS_CLONE_HELPER_UNSAFE in fallback mode 2024-10-03 11:18:36 -07:00
hashmap.c
hashmap.h
help.c
help.h
hex-ll.c
hex-ll.h
hex.c
hex.h
hook.c
hook.h
http-backend.c
http-fetch.c
http-push.c
http-walker.c
http.c Merge branch 'jk/http-leakfixes' 2024-10-02 07:46:26 -07:00
http.h
ident.c
ident.h
imap-send.c
iterator.h
json-writer.c
json-writer.h
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c Merge branch 'jk/output-prefix-cleanup' 2024-10-10 14:22:30 -07:00
line-log.h
line-range.c
line-range.h
linear-assignment.c
linear-assignment.h
list-objects-filter-options.c
list-objects-filter-options.h
list-objects-filter.c
list-objects-filter.h
list-objects.c
list-objects.h
list.h
lockfile.c
lockfile.h
log-tree.c Merge branch 'ng/rebase-merges-branch-name-as-label' 2024-10-18 13:56:22 -04:00
log-tree.h rebase-update-refs: extract load_branch_decorations 2024-10-09 10:52:45 -07:00
loose.c loose: don't rely on repository global state 2024-10-09 11:51:31 -07:00
loose.h
ls-refs.c
ls-refs.h
mailinfo.c
mailinfo.h
mailmap.c
mailmap.h
match-trees.c
match-trees.h
mem-pool.c
mem-pool.h
merge-blobs.c
merge-blobs.h
merge-ll.c
merge-ll.h
merge-ort-wrappers.c
merge-ort-wrappers.h
merge-ort.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
merge-ort.h
merge-recursive.c
merge-recursive.h
merge.c
merge.h
mergesort.h
midx-write.c pack-write: fix return parameter of `write_rev_file_order()` 2024-09-30 11:23:08 -07:00
midx.c
midx.h
name-hash.c
name-hash.h
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes-utils.c
notes-utils.h
notes.c
notes.h
object-file-convert.c
object-file-convert.h
object-file.c Merge branch 'tb/weak-sha1-for-tail-sum' 2024-10-02 07:46:27 -07:00
object-file.h
object-name.c
object-name.h
object-store-ll.h
object-store.h
object.c
object.h
oid-array.c
oid-array.h
oidmap.c
oidmap.h
oidset.c
oidset.h
oidtree.c
oidtree.h
pack-bitmap-write.c pack-bitmap-write: fix leaking OID array 2024-09-30 11:23:07 -07:00
pack-bitmap.c pseudo-merge: fix various memory leaks 2024-09-30 11:23:06 -07:00
pack-bitmap.h
pack-check.c
pack-mtimes.c
pack-mtimes.h
pack-objects.c
pack-objects.h
pack-revindex.c
pack-revindex.h
pack-write.c Merge branch 'ps/leakfixes-part-8' 2024-10-10 14:22:29 -07:00
pack.h pack-write: fix return parameter of `write_rev_file_order()` 2024-09-30 11:23:08 -07:00
packfile.c
packfile.h
pager.c
pager.h
parallel-checkout.c
parallel-checkout.h
parse-options-cb.c
parse-options.c
parse-options.h
parse.c
parse.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c
path.h
pathspec.c
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
preload-index.h
pretty.c
pretty.h
prio-queue.c
prio-queue.h
progress.c
progress.h
promisor-remote.c
promisor-remote.h
prompt.c
prompt.h
protocol-caps.c
protocol-caps.h
protocol.c
protocol.h
prune-packed.c
prune-packed.h
pseudo-merge.c pseudo-merge: fix leaking strmap keys 2024-09-30 11:23:06 -07:00
pseudo-merge.h pseudo-merge: fix various memory leaks 2024-09-30 11:23:06 -07:00
quote.c
quote.h
range-diff.c Merge branch 'jk/output-prefix-cleanup' 2024-10-10 14:22:30 -07:00
range-diff.h
reachable.c
reachable.h
read-cache-ll.h
read-cache.c Merge branch 'ps/leakfixes-part-8' 2024-10-10 14:22:29 -07:00
read-cache.h
rebase-interactive.c
rebase-interactive.h
rebase.c
rebase.h
ref-filter.c
ref-filter.h
reflog-walk.c
reflog-walk.h
reflog.c
reflog.h
refs.c ref: add more strict checks for regular refs 2024-11-21 08:21:33 +09:00
refs.h ref: support multiple worktrees check for refs 2024-11-21 08:21:32 +09:00
refspec.c
refspec.h
remote-curl.c
remote.c Merge branch 'xx/remote-server-option-config' 2024-10-15 16:56:43 -04:00
remote.h Merge branch 'xx/remote-server-option-config' 2024-10-15 16:56:43 -04:00
replace-object.c
replace-object.h
repo-settings.c
repo-settings.h
repository.c
repository.h
rerere.c
rerere.h
reset.c
reset.h
resolve-undo.c
resolve-undo.h
revision.c revision: fix leaking saved parents 2024-09-30 11:23:07 -07:00
revision.h
run-command.c
run-command.h
sane-ctype.h
scalar.c Merge branch 'ps/leakfixes-part-8' 2024-10-10 14:22:29 -07:00
send-pack.c
send-pack.h
sequencer.c rebase-merges: try and use branch names as labels 2024-10-09 10:52:46 -07:00
sequencer.h
serve.c
serve.h
server-info.c
server-info.h
setup.c
setup.h
sh-i18n--envsubst.c
sha1dc_git.c
sha1dc_git.h
shallow.c
shallow.h
shared.mak
shell.c shell: fix leaking strings 2024-09-30 11:23:03 -07:00
shortlog.h
sideband.c
sideband.h
sigchain.c
sigchain.h
simple-ipc.h simple-ipc: split async server initialization and running 2024-10-08 12:03:56 -07:00
sparse-index.c Merge branch 'ds/sparse-checkout-expansion-advice' 2024-10-02 07:46:25 -07:00
sparse-index.h
split-index.c
split-index.h
stable-qsort.c
statinfo.c
statinfo.h
strbuf.c
strbuf.h
streaming.c
streaming.h
string-list.c
string-list.h
strmap.c
strmap.h
strvec.c
strvec.h
sub-process.c
sub-process.h
submodule-config.c submodule: fix leaking submodule entry list 2024-09-30 11:23:03 -07:00
submodule-config.h submodule: fix leaking submodule entry list 2024-09-30 11:23:03 -07:00
submodule.c Merge branch 'ps/leakfixes-part-7' 2024-10-02 07:46:26 -07:00
submodule.h
symlinks.c
symlinks.h
tag.c
tag.h
tar.h
tempfile.c
tempfile.h
thread-utils.c
thread-utils.h
tmp-objdir.c Merge branch 'tb/weak-sha1-for-tail-sum' 2024-10-02 07:46:27 -07:00
tmp-objdir.h
trace.c
trace.h
trace2.c
trace2.h
trailer.c
trailer.h
transport-helper.c
transport-internal.h
transport.c transport.c:🤝 make use of server options from remote 2024-10-08 10:22:08 -07:00
transport.h transport: introduce parse_transport_option() method 2024-10-08 10:22:06 -07:00
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unicode-width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unix-stream-server.c
unix-stream-server.h
unpack-trees.c
unpack-trees.h
upload-pack.c
upload-pack.h
url.c
url.h
urlmatch.c
urlmatch.h
usage.c
userdiff.c
userdiff.h
utf8.c
utf8.h utf8.h: squelch unused-parameter warnings with NO_ICONV 2024-10-02 15:52:48 -07:00
varint.c
varint.h
version.c
version.h
versioncmp.c
versioncmp.h
walker.c
walker.h
wildmatch.c
wildmatch.h
worktree.c
worktree.h
wrap-for-bin.sh
wrapper.c
wrapper.h
write-or-die.c
write-or-die.h
ws.c
ws.h
wt-status.c wt-status: fix leaking buffer with sparse directories 2024-09-30 11:23:03 -07:00
wt-status.h
xdiff-interface.c
xdiff-interface.h

README.md

Build status

Git - fast, scalable, distributed revision control system

Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.

Git is an Open Source project covered by the GNU General Public License version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

Many Git online resources are accessible from https://git-scm.com/ including full documentation and Git related tools.

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-<commandname>.txt for documentation of each command. If git has been correctly installed, then the tutorial can also be read with man gittutorial or git help tutorial, and the documentation of each command with man git-<commandname> or git help <commandname>.

CVS users may also want to read Documentation/gitcvs-migration.txt (man gitcvs-migration or git help cvs-migration if git is installed).

The user discussion and development of Git take place on the Git mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to git@vger.kernel.org (read Documentation/SubmittingPatches for instructions on patch submission and Documentation/CodingGuidelines).

Those wishing to help with error message, usage and informational message string translations (localization l10) should see po/README.md (a po file is a Portable Object file that holds the translations).

To subscribe to the list, send an email to git+subscribe@vger.kernel.org (see https://subspace.kernel.org/subscribing.html for details). The mailing list archives are available at https://lore.kernel.org/git/, https://marc.info/?l=git and other archival sites.

Issues which are security relevant should be disclosed privately to the Git Security mailing list git-security@googlegroups.com.

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • "goddamn idiotic truckload of sh*t": when it breaks