Merge branch 'ta/doc-cleanup' into maint

* ta/doc-cleanup:
  Documentation: build html for all files in technical and howto
  Documentation/howto: convert plain text files to asciidoc
  Documentation/technical: convert plain text files to asciidoc
  Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
  Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
  Split over-long synopsis in git-fetch-pack.txt into several lines
This commit is contained in:
Junio C Hamano 2012-12-22 20:35:34 -08:00
commit 66afe50b43
20 changed files with 134 additions and 68 deletions

View File

@ -24,8 +24,30 @@ SP_ARTICLES = user-manual
SP_ARTICLES += howto/revert-branch-rebase SP_ARTICLES += howto/revert-branch-rebase
SP_ARTICLES += howto/using-merge-subtree SP_ARTICLES += howto/using-merge-subtree
SP_ARTICLES += howto/using-signed-tag-in-pull-request SP_ARTICLES += howto/using-signed-tag-in-pull-request
SP_ARTICLES += howto/use-git-daemon
SP_ARTICLES += howto/update-hook-example
SP_ARTICLES += howto/setup-git-server-over-http
SP_ARTICLES += howto/separating-topic-branches
SP_ARTICLES += howto/revert-a-faulty-merge
SP_ARTICLES += howto/recover-corrupted-blob-object
SP_ARTICLES += howto/rebuild-from-update-hook
SP_ARTICLES += howto/rebuild-from-update-hook
SP_ARTICLES += howto/rebase-from-internal-branch
SP_ARTICLES += howto/maintain-git
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt))) API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
SP_ARTICLES += $(API_DOCS) SP_ARTICLES += $(API_DOCS)
TECH_DOCS = technical/index-format
TECH_DOCS += technical/pack-format
TECH_DOCS += technical/pack-heuristics
TECH_DOCS += technical/pack-protocol
TECH_DOCS += technical/protocol-capabilities
TECH_DOCS += technical/protocol-common
TECH_DOCS += technical/racy-git
TECH_DOCS += technical/send-pack-pipeline
TECH_DOCS += technical/shallow
TECH_DOCS += technical/trivial-merge
SP_ARTICLES += $(TECH_DOCS)
SP_ARTICLES += technical/api-index SP_ARTICLES += technical/api-index
DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES)) DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
@ -231,7 +253,7 @@ clean:
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info $(RM) *.texi *.texi+ *.texi++ git.info gitman.info
$(RM) *.pdf $(RM) *.pdf
$(RM) howto-index.txt howto/*.html doc.dep $(RM) howto-index.txt howto/*.html doc.dep
$(RM) technical/api-*.html technical/api-index.txt $(RM) technical/*.html technical/api-index.txt
$(RM) $(cmds_txt) *.made $(RM) $(cmds_txt) *.made
$(RM) manpage-base-url.xsl $(RM) manpage-base-url.xsl
@ -264,7 +286,7 @@ technical/api-index.txt: technical/api-index-skel.txt \
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh $(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../ technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
$(patsubst %,%.html,$(API_DOCS) technical/api-index): %.html : %.txt $(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt
$(QUIET_ASCIIDOC)$(ASCIIDOC) -b xhtml11 -f asciidoc.conf \ $(QUIET_ASCIIDOC)$(ASCIIDOC) -b xhtml11 -f asciidoc.conf \
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) $*.txt $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) $*.txt

View File

@ -257,7 +257,7 @@ Date: Sat May 3 11:59:44 2008 -0700
Linux 2.6.26-rc1 Linux 2.6.26-rc1
:100644 100644 5cf8258195331a4dbdddff08b8d68642638eea57 4492984efc09ab72ff6219a7bc21fb6a957c4cd5 M Makefile :100644 100644 5cf82581... 4492984e... M Makefile
------------- -------------
At this point we can see what the commit does, check it out (if it's At this point we can see what the commit does, check it out (if it's
@ -331,7 +331,7 @@ Date: Sat May 3 11:59:44 2008 -0700
Linux 2.6.26-rc1 Linux 2.6.26-rc1
:100644 100644 5cf8258195331a4dbdddff08b8d68642638eea57 4492984efc09ab72ff6219a7bc21fb6a957c4cd5 M Makefile :100644 100644 5cf82581... 4492984e... M Makefile
bisect run success bisect run success
------------- -------------

View File

@ -9,7 +9,10 @@ git-fetch-pack - Receive missing objects from another repository
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
'git fetch-pack' [--all] [--quiet|-q] [--keep|-k] [--thin] [--include-tag] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [-v] [<host>:]<directory> [<refs>...] 'git fetch-pack' [--all] [--quiet|-q] [--keep|-k] [--thin] [--include-tag]
[--upload-pack=<git-upload-pack>]
[--depth=<n>] [--no-progress]
[-v] [<host>:]<directory> [<refs>...]
DESCRIPTION DESCRIPTION
----------- -----------

View File

@ -5,6 +5,10 @@ Abstract: Imagine that git development is racing along as usual, when our friend
neighborhood maintainer is struck down by a wayward bus. Out of the neighborhood maintainer is struck down by a wayward bus. Out of the
hordes of suckers (loyal developers), you have been tricked (chosen) to hordes of suckers (loyal developers), you have been tricked (chosen) to
step up as the new maintainer. This howto will show you "how to" do it. step up as the new maintainer. This howto will show you "how to" do it.
Content-type: text/asciidoc
How to maintain Git
===================
The maintainer's git time is spent on three activities. The maintainer's git time is spent on three activities.

View File

@ -8,7 +8,12 @@ Abstract: In this article, JC talks about how he rebases the
the "master" branch, and how "rebase" works. Also discussed the "master" branch, and how "rebase" works. Also discussed
is how this applies to individual developers who sends patches is how this applies to individual developers who sends patches
upstream. upstream.
Content-type: text/asciidoc
How to rebase from an internal branch
=====================================
--------------------------------------
Petr Baudis <pasky@suse.cz> writes: Petr Baudis <pasky@suse.cz> writes:
> Dear diary, on Sun, Aug 14, 2005 at 09:57:13AM CEST, I got a letter > Dear diary, on Sun, Aug 14, 2005 at 09:57:13AM CEST, I got a letter
@ -19,6 +24,7 @@ Petr Baudis <pasky@suse.cz> writes:
>> > branch to the real branches. >> > branch to the real branches.
>> >>
> Actually, wouldn't this be also precisely for what StGIT is intended to? > Actually, wouldn't this be also precisely for what StGIT is intended to?
--------------------------------------
Exactly my feeling. I was sort of waiting for Catalin to speak Exactly my feeling. I was sort of waiting for Catalin to speak
up. With its basing philosophical ancestry on quilt, this is up. With its basing philosophical ancestry on quilt, this is
@ -156,8 +162,3 @@ you continue on starting from the new "master" head, which is
the #1' commit. the #1' commit.
-jc -jc
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

View File

@ -5,6 +5,10 @@ Date: Fri, 26 Aug 2005 18:19:10 -0700
Abstract: In this how-to article, JC talks about how he Abstract: In this how-to article, JC talks about how he
uses the post-update hook to automate git documentation page uses the post-update hook to automate git documentation page
shown at http://www.kernel.org/pub/software/scm/git/docs/. shown at http://www.kernel.org/pub/software/scm/git/docs/.
Content-type: text/asciidoc
How to rebuild from update hook
===============================
The pages under http://www.kernel.org/pub/software/scm/git/docs/ The pages under http://www.kernel.org/pub/software/scm/git/docs/
are built from Documentation/ directory of the git.git project are built from Documentation/ directory of the git.git project

View File

@ -3,11 +3,17 @@ From: Linus Torvalds <torvalds@linux-foundation.org>
Subject: corrupt object on git-gc Subject: corrupt object on git-gc
Abstract: Some tricks to reconstruct blob objects in order to fix Abstract: Some tricks to reconstruct blob objects in order to fix
a corrupted repository. a corrupted repository.
Content-type: text/asciidoc
How to recover a corrupted blob object
======================================
-----------------------------------------------------------
On Fri, 9 Nov 2007, Yossi Leybovich wrote: On Fri, 9 Nov 2007, Yossi Leybovich wrote:
> >
> Did not help still the repository look for this object? > Did not help still the repository look for this object?
> Any one know how can I track this object and understand which file is it > Any one know how can I track this object and understand which file is it
-----------------------------------------------------------
So exactly *because* the SHA1 hash is cryptographically secure, the hash So exactly *because* the SHA1 hash is cryptographically secure, the hash
itself doesn't actually tell you anything, in order to fix a corrupt itself doesn't actually tell you anything, in order to fix a corrupt
@ -31,19 +37,23 @@ original object, so right now the corrupt object is useless, but it's very
interesting for the future, in the hope that you can re-create a interesting for the future, in the hope that you can re-create a
non-corrupt version. non-corrupt version.
-----------------------------------------------------------
So: So:
> ib]$ mv .git/objects/4b/9458b3786228369c63936db65827de3cc06200 ../ > ib]$ mv .git/objects/4b/9458b3786228369c63936db65827de3cc06200 ../
-----------------------------------------------------------
This is the right thing to do, although it's usually best to save it under This is the right thing to do, although it's usually best to save it under
it's full SHA1 name (you just dropped the "4b" from the result ;). it's full SHA1 name (you just dropped the "4b" from the result ;).
Let's see what that tells us: Let's see what that tells us:
-----------------------------------------------------------
> ib]$ git-fsck --full > ib]$ git-fsck --full
> broken link from tree 2d9263c6d23595e7cb2a21e5ebbb53655278dff8 > broken link from tree 2d9263c6d23595e7cb2a21e5ebbb53655278dff8
> to blob 4b9458b3786228369c63936db65827de3cc06200 > to blob 4b9458b3786228369c63936db65827de3cc06200
> missing blob 4b9458b3786228369c63936db65827de3cc06200 > missing blob 4b9458b3786228369c63936db65827de3cc06200
-----------------------------------------------------------
Ok, I removed the "dangling commit" messages, because they are just Ok, I removed the "dangling commit" messages, because they are just
messages about the fact that you probably have rebased etc, so they're not messages about the fact that you probably have rebased etc, so they're not

View File

@ -7,6 +7,10 @@ Abstract: Sometimes a branch that was already merged to the mainline
after the offending branch is fixed. after the offending branch is fixed.
Message-ID: <7vocz8a6zk.fsf@gitster.siamese.dyndns.org> Message-ID: <7vocz8a6zk.fsf@gitster.siamese.dyndns.org>
References: <alpine.LFD.2.00.0812181949450.14014@localhost.localdomain> References: <alpine.LFD.2.00.0812181949450.14014@localhost.localdomain>
Content-type: text/asciidoc
How to revert a faulty merge
============================
Alan <alan@clueserver.org> said: Alan <alan@clueserver.org> said:

View File

@ -8,8 +8,8 @@ Date: Mon, 29 Aug 2005 21:39:02 -0700
Content-type: text/asciidoc Content-type: text/asciidoc
Message-ID: <7voe7g3uop.fsf@assigned-by-dhcp.cox.net> Message-ID: <7voe7g3uop.fsf@assigned-by-dhcp.cox.net>
Reverting an existing commit How to revert an existing commit
============================ ================================
One of the changes I pulled into the 'master' branch turns out to One of the changes I pulled into the 'master' branch turns out to
break building GIT with GCC 2.95. While they were well intentioned break building GIT with GCC 2.95. While they were well intentioned

View File

@ -1,6 +1,10 @@
From: Junio C Hamano <gitster@pobox.com> From: Junio C Hamano <gitster@pobox.com>
Subject: Separating topic branches Subject: Separating topic branches
Abstract: In this article, JC describes how to separate topic branches. Abstract: In this article, JC describes how to separate topic branches.
Content-type: text/asciidoc
How to separate topic branches
==============================
This text was originally a footnote to a discussion about the This text was originally a footnote to a discussion about the
behaviour of the git diff commands. behaviour of the git diff commands.

View File

@ -1,6 +1,10 @@
From: Rutger Nijlunsing <rutger@nospam.com> From: Rutger Nijlunsing <rutger@nospam.com>
Subject: Setting up a git repository which can be pushed into and pulled from over HTTP(S). Subject: Setting up a git repository which can be pushed into and pulled from over HTTP(S).
Date: Thu, 10 Aug 2006 22:00:26 +0200 Date: Thu, 10 Aug 2006 22:00:26 +0200
Content-type: text/asciidoc
How to setup git server over http
=================================
Since Apache is one of those packages people like to compile Since Apache is one of those packages people like to compile
themselves while others prefer the bureaucrat's dream Debian, it is themselves while others prefer the bureaucrat's dream Debian, it is

View File

@ -5,6 +5,10 @@ Message-ID: <7vfypumlu3.fsf@assigned-by-dhcp.cox.net>
Abstract: An example hooks/update script is presented to Abstract: An example hooks/update script is presented to
implement repository maintenance policies, such as who can push implement repository maintenance policies, such as who can push
into which branch and who can make a tag. into which branch and who can make a tag.
Content-type: text/asciidoc
How to use the update hook
==========================
When your developer runs git-push into the repository, When your developer runs git-push into the repository,
git-receive-pack is run (either locally or over ssh) as that git-receive-pack is run (either locally or over ssh) as that
@ -32,8 +36,7 @@ like this as your hooks/update script.
[jc: editorial note. This is a much improved version by Carl [jc: editorial note. This is a much improved version by Carl
since I posted the original outline] since I posted the original outline]
-- >8 -- beginning of script -- >8 -- ----------------------------------------------------
#!/bin/bash #!/bin/bash
umask 002 umask 002
@ -111,12 +114,12 @@ then
info "Found matching head pattern: '$head_pattern'" info "Found matching head pattern: '$head_pattern'"
for user_pattern in $user_patterns; do for user_pattern in $user_patterns; do
info "Checking user: '$username' against pattern: '$user_pattern'" info "Checking user: '$username' against pattern: '$user_pattern'"
matchlen=$(expr "$username" : "$user_pattern") matchlen=$(expr "$username" : "$user_pattern")
if test "$matchlen" = "${#username}" if test "$matchlen" = "${#username}"
then then
grant "Allowing user: '$username' with pattern: '$user_pattern'" grant "Allowing user: '$username' with pattern: '$user_pattern'"
fi fi
done done
deny "The user is not in the access list for this branch" deny "The user is not in the access list for this branch"
done done
@ -149,13 +152,13 @@ then
info "Found matching head pattern: '$head_pattern'" info "Found matching head pattern: '$head_pattern'"
for group_pattern in $group_patterns; do for group_pattern in $group_patterns; do
for groupname in $groups; do for groupname in $groups; do
info "Checking group: '$groupname' against pattern: '$group_pattern'" info "Checking group: '$groupname' against pattern: '$group_pattern'"
matchlen=$(expr "$groupname" : "$group_pattern") matchlen=$(expr "$groupname" : "$group_pattern")
if test "$matchlen" = "${#groupname}" if test "$matchlen" = "${#groupname}"
then then
grant "Allowing group: '$groupname' with pattern: '$group_pattern'" grant "Allowing group: '$groupname' with pattern: '$group_pattern'"
fi fi
done done
done done
deny "None of the user's groups are in the access list for this branch" deny "None of the user's groups are in the access list for this branch"
@ -169,24 +172,21 @@ then
fi fi
deny >/dev/null "There are no more rules to check. Denying access" deny >/dev/null "There are no more rules to check. Denying access"
----------------------------------------------------
-- >8 -- end of script -- >8 --
This uses two files, $GIT_DIR/info/allowed-users and This uses two files, $GIT_DIR/info/allowed-users and
allowed-groups, to describe which heads can be pushed into by allowed-groups, to describe which heads can be pushed into by
whom. The format of each file would look like this: whom. The format of each file would look like this:
refs/heads/master junio refs/heads/master junio
+refs/heads/pu junio +refs/heads/pu junio
refs/heads/cogito$ pasky refs/heads/cogito$ pasky
refs/heads/bw/.* linus refs/heads/bw/.* linus
refs/heads/tmp/.* .* refs/heads/tmp/.* .*
refs/tags/v[0-9].* junio refs/tags/v[0-9].* junio
With this, Linus can push or create "bw/penguin" or "bw/zebra" With this, Linus can push or create "bw/penguin" or "bw/zebra"
or "bw/panda" branches, Pasky can do only "cogito", and JC can or "bw/panda" branches, Pasky can do only "cogito", and JC can
do master and pu branches and make versioned tags. And anybody do master and pu branches and make versioned tags. And anybody
can do tmp/blah branches. The '+' sign at the pu record means can do tmp/blah branches. The '+' sign at the pu record means
that JC can make non-fast-forward pushes on it. that JC can make non-fast-forward pushes on it.
------------

View File

@ -1,4 +1,7 @@
Content-type: text/asciidoc
How to use git-daemon How to use git-daemon
=====================
Git can be run in inetd mode and in stand alone mode. But all you want is Git can be run in inetd mode and in stand alone mode. But all you want is
let a coworker pull from you, and therefore need to set up a git server let a coworker pull from you, and therefore need to set up a git server

View File

@ -7,8 +7,8 @@ Abstract: Beginning v1.7.9, a contributor can push a signed tag to her
later validate it. later validate it.
Content-type: text/asciidoc Content-type: text/asciidoc
Using signed tag in pull requests How to use a signed tag in pull requests
================================= ========================================
A typical distributed workflow using Git is for a contributor to fork a A typical distributed workflow using Git is for a contributor to fork a
project, build on it, publish the result to her public repository, and ask project, build on it, publish the result to her public repository, and ask

View File

@ -1,7 +1,7 @@
GIT index format GIT index format
================ ================
= The git index file has the following format == The git index file has the following format
All binary numbers are in network byte order. Version 2 is described All binary numbers are in network byte order. Version 2 is described
here unless stated otherwise. here unless stated otherwise.

View File

@ -1,7 +1,7 @@
GIT pack format GIT pack format
=============== ===============
= pack-*.pack files have the following format: == pack-*.pack files have the following format:
- A header appears at the beginning and consists of the following: - A header appears at the beginning and consists of the following:
@ -34,7 +34,7 @@ GIT pack format
- The trailer records 20-byte SHA1 checksum of all of the above. - The trailer records 20-byte SHA1 checksum of all of the above.
= Original (version 1) pack-*.idx files have the following format: == Original (version 1) pack-*.idx files have the following format:
- The header consists of 256 4-byte network byte order - The header consists of 256 4-byte network byte order
integers. N-th entry of this table records the number of integers. N-th entry of this table records the number of
@ -123,8 +123,8 @@ Pack file entry: <+
= Version 2 pack-*.idx files support packs larger than 4 GiB, and == Version 2 pack-*.idx files support packs larger than 4 GiB, and
have some other reorganizations. They have the format: have some other reorganizations. They have the format:
- A 4-byte magic number '\377tOc' which is an unreasonable - A 4-byte magic number '\377tOc' which is an unreasonable
fanout[0] value. fanout[0] value.

View File

@ -117,7 +117,7 @@ A few things to remember here:
- The repository path is always quoted with single quotes. - The repository path is always quoted with single quotes.
Fetching Data From a Server Fetching Data From a Server
=========================== ---------------------------
When one Git repository wants to get data that a second repository When one Git repository wants to get data that a second repository
has, the first can 'fetch' from the second. This operation determines has, the first can 'fetch' from the second. This operation determines
@ -134,7 +134,8 @@ with the object name that each reference currently points to.
$ echo -e -n "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" | $ echo -e -n "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" |
nc -v example.com 9418 nc -v example.com 9418
00887217a7c7e582c46cec22a130adf4b9d7d950fba0 HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag 00887217a7c7e582c46cec22a130adf4b9d7d950fba0 HEAD\0multi_ack thin-pack
side-band side-band-64k ofs-delta shallow no-progress include-tag
00441d3fcd5ced445d1abc402225c0b8a1299641f497 refs/heads/integration 00441d3fcd5ced445d1abc402225c0b8a1299641f497 refs/heads/integration
003f7217a7c7e582c46cec22a130adf4b9d7d950fba0 refs/heads/master 003f7217a7c7e582c46cec22a130adf4b9d7d950fba0 refs/heads/master
003cb88d2441cac0977faf98efc80305012112238d9d refs/tags/v0.9 003cb88d2441cac0977faf98efc80305012112238d9d refs/tags/v0.9
@ -421,7 +422,7 @@ entire packfile without multiplexing.
Pushing Data To a Server Pushing Data To a Server
======================== ------------------------
Pushing data to a server will invoke the 'receive-pack' process on the Pushing data to a server will invoke the 'receive-pack' process on the
server, which will allow the client to tell it which references it should server, which will allow the client to tell it which references it should

View File

@ -1,5 +1,5 @@
git-send-pack Git-send-pack internals
============= =======================
Overall operation Overall operation
----------------- -----------------

View File

@ -1,6 +1,12 @@
Def.: Shallow commits do have parents, but not in the shallow Shallow commits
===============
.Definition
*********************************************************
Shallow commits do have parents, but not in the shallow
repo, and therefore grafts are introduced pretending that repo, and therefore grafts are introduced pretending that
these commits have no parents. these commits have no parents.
*********************************************************
The basic idea is to write the SHA1s of shallow commits into The basic idea is to write the SHA1s of shallow commits into
$GIT_DIR/shallow, and handle its contents like the contents $GIT_DIR/shallow, and handle its contents like the contents

View File

@ -74,24 +74,24 @@ For multiple ancestors, a '+' means that this case applies even if
only one ancestor or remote fits; a '^' means all of the ancestors only one ancestor or remote fits; a '^' means all of the ancestors
must be the same. must be the same.
case ancest head remote result case ancest head remote result
---------------------------------------- ----------------------------------------
1 (empty)+ (empty) (empty) (empty) 1 (empty)+ (empty) (empty) (empty)
2ALT (empty)+ *empty* remote remote 2ALT (empty)+ *empty* remote remote
2 (empty)^ (empty) remote no merge 2 (empty)^ (empty) remote no merge
3ALT (empty)+ head *empty* head 3ALT (empty)+ head *empty* head
3 (empty)^ head (empty) no merge 3 (empty)^ head (empty) no merge
4 (empty)^ head remote no merge 4 (empty)^ head remote no merge
5ALT * head head head 5ALT * head head head
6 ancest+ (empty) (empty) no merge 6 ancest+ (empty) (empty) no merge
8 ancest^ (empty) ancest no merge 8 ancest^ (empty) ancest no merge
7 ancest+ (empty) remote no merge 7 ancest+ (empty) remote no merge
10 ancest^ ancest (empty) no merge 10 ancest^ ancest (empty) no merge
9 ancest+ head (empty) no merge 9 ancest+ head (empty) no merge
16 anc1/anc2 anc1 anc2 no merge 16 anc1/anc2 anc1 anc2 no merge
13 ancest+ head ancest head 13 ancest+ head ancest head
14 ancest+ ancest remote remote 14 ancest+ ancest remote remote
11 ancest+ head remote no merge 11 ancest+ head remote no merge
Only #2ALT and #3ALT use *empty*, because these are the only cases Only #2ALT and #3ALT use *empty*, because these are the only cases
where there can be conflicts that didn't exist before. Note that we where there can be conflicts that didn't exist before. Note that we