[PATCH v4 20/24] introduce GIT_INDEX_VERSION environment variable

2013-11-27 Thread Thomas Gummerer
Respect a GIT_INDEX_VERSION environment variable, when a new index is
initialized.  Setting the environment variable will not cause existing
index files to be converted to another format for additional safety.

Signed-off-by: Thomas Gummerer t.gumme...@gmail.com
---
 Documentation/git.txt | 5 +
 read-cache.c  | 9 +++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/Documentation/git.txt b/Documentation/git.txt
index 10cddb5..2b2aad5 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -703,6 +703,11 @@ Git so take care if using Cogito etc.
index file. If not specified, the default of `$GIT_DIR/index`
is used.
 
+'GIT_INDEX_VERSION'::
+   This environment variable allows the specification of an index
+   version for new repositories.  It won't affect existing index
+   files.  By default index file version 3 is used.
+
 'GIT_OBJECT_DIRECTORY'::
If the object storage directory is specified via this
environment variable then the sha1 directories are created
diff --git a/read-cache.c b/read-cache.c
index 46551af..04430e5 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1233,8 +1233,13 @@ static struct cache_entry *refresh_cache_entry(struct 
cache_entry *ce, int reall
 void initialize_index(struct index_state *istate, int version)
 {
istate-initialized = 1;
-   if (!version)
-   version = INDEX_FORMAT_DEFAULT;
+   if (!version) {
+   char *envversion = getenv(GIT_INDEX_VERSION);
+   if (!envversion)
+   version = INDEX_FORMAT_DEFAULT;
+   else
+   version = atoi(envversion);
+   }
istate-version = version;
set_istate_ops(istate);
 }
-- 
1.8.4.2

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 20/24] introduce GIT_INDEX_VERSION environment variable

2013-11-27 Thread Eric Sunshine
On Wed, Nov 27, 2013 at 7:00 AM, Thomas Gummerer t.gumme...@gmail.com wrote:
 Respect a GIT_INDEX_VERSION environment variable, when a new index is
 initialized.  Setting the environment variable will not cause existing
 index files to be converted to another format for additional safety.

 Signed-off-by: Thomas Gummerer t.gumme...@gmail.com
 ---
 diff --git a/read-cache.c b/read-cache.c
 index 46551af..04430e5 100644
 --- a/read-cache.c
 +++ b/read-cache.c
 @@ -1233,8 +1233,13 @@ static struct cache_entry *refresh_cache_entry(struct 
 cache_entry *ce, int reall
  void initialize_index(struct index_state *istate, int version)
  {
 istate-initialized = 1;
 -   if (!version)
 -   version = INDEX_FORMAT_DEFAULT;
 +   if (!version) {
 +   char *envversion = getenv(GIT_INDEX_VERSION);
 +   if (!envversion)
 +   version = INDEX_FORMAT_DEFAULT;
 +   else
 +   version = atoi(envversion);

Do you want to check that atoi() returned a valid value and emit a
diagnostic if it did not?

 +   }
 istate-version = version;
 set_istate_ops(istate);
  }
 --
 1.8.4.2
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 20/24] introduce GIT_INDEX_VERSION environment variable

2013-11-27 Thread Junio C Hamano
Eric Sunshine sunsh...@sunshineco.com writes:

 On Wed, Nov 27, 2013 at 7:00 AM, Thomas Gummerer t.gumme...@gmail.com wrote:
 Respect a GIT_INDEX_VERSION environment variable, when a new index is
 initialized.  Setting the environment variable will not cause existing
 index files to be converted to another format for additional safety.

 Signed-off-by: Thomas Gummerer t.gumme...@gmail.com
 ---
 diff --git a/read-cache.c b/read-cache.c
 index 46551af..04430e5 100644
 --- a/read-cache.c
 +++ b/read-cache.c
 @@ -1233,8 +1233,13 @@ static struct cache_entry *refresh_cache_entry(struct 
 cache_entry *ce, int reall
  void initialize_index(struct index_state *istate, int version)
  {
 istate-initialized = 1;
 -   if (!version)
 -   version = INDEX_FORMAT_DEFAULT;
 +   if (!version) {
 +   char *envversion = getenv(GIT_INDEX_VERSION);
 +   if (!envversion)
 +   version = INDEX_FORMAT_DEFAULT;
 +   else
 +   version = atoi(envversion);

 Do you want to check that atoi() returned a valid value and emit a
 diagnostic if it did not?


Good eyes.

We use strtoul() for this kind of thing instead of atoi() for format
checking.  The code also needs to make sure that the value obtained
thusly are among the versions that are supported.

Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html