rugged 0.24.0b2 → 0.24.0b3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/include/git2/index.h +21 -7
- data/vendor/libgit2/src/commit_list.c +3 -3
- data/vendor/libgit2/src/commit_list.h +1 -1
- data/vendor/libgit2/src/index.c +62 -15
- data/vendor/libgit2/src/signature.c +16 -2
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a31950be316b1d3480f1617cc75189bf90697dc2
         | 
| 4 | 
            +
              data.tar.gz: a97a557386b6875652eb2859e88da305fbb65ae3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c6879754a8a09f93cff19b46a3faa180a091dbc5c80f0c00361da4d8661bcd837d362df6f519913501f3a878ec1f0a1fd192dcdb14d3b56d6384661769cc9144
         | 
| 7 | 
            +
              data.tar.gz: c958d72e7dfd55e54cd5b6ee6d6e9e56013919eb084759ef67354e02d48f883b93f2f2c5e876c1c48359321d8bb4458f1c5cde6a201ca6a92f19a0accab3a53d
         | 
    
        data/lib/rugged/version.rb
    CHANGED
    
    
| @@ -154,13 +154,27 @@ typedef enum { | |
| 154 154 | 
             
            	GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2),
         | 
| 155 155 | 
             
            } git_index_add_option_t;
         | 
| 156 156 |  | 
| 157 | 
            -
             | 
| 158 | 
            -
             | 
| 159 | 
            -
              | 
| 160 | 
            -
             | 
| 161 | 
            -
             | 
| 162 | 
            -
              | 
| 163 | 
            -
             | 
| 157 | 
            +
            typedef enum {
         | 
| 158 | 
            +
            	/**
         | 
| 159 | 
            +
            	 * Match any index stage.
         | 
| 160 | 
            +
            	 *
         | 
| 161 | 
            +
            	 * Some index APIs take a stage to match; pass this value to match
         | 
| 162 | 
            +
            	 * any entry matching the path regardless of stage.
         | 
| 163 | 
            +
            	 */
         | 
| 164 | 
            +
            	GIT_INDEX_STAGE_ANY = -1,
         | 
| 165 | 
            +
             | 
| 166 | 
            +
            	/** A normal staged file in the index. */
         | 
| 167 | 
            +
            	GIT_INDEX_STAGE_NORMAL = 0,
         | 
| 168 | 
            +
             | 
| 169 | 
            +
            	/** The ancestor side of a conflict. */
         | 
| 170 | 
            +
            	GIT_INDEX_STAGE_ANCESTOR = 1,
         | 
| 171 | 
            +
             | 
| 172 | 
            +
            	/** The "ours" side of a conflict. */
         | 
| 173 | 
            +
            	GIT_INDEX_STAGE_OURS = 2,
         | 
| 174 | 
            +
             | 
| 175 | 
            +
            	/** The "theirs" side of a conflict. */
         | 
| 176 | 
            +
            	GIT_INDEX_STAGE_THEIRS = 3,
         | 
| 177 | 
            +
            } git_index_stage_t;
         | 
| 164 178 |  | 
| 165 179 | 
             
            /** @name Index File Functions
         | 
| 166 180 | 
             
             *
         | 
| @@ -110,7 +110,7 @@ static int commit_quick_parse( | |
| 110 110 | 
             
            	const uint8_t *buffer_end = buffer + buffer_len;
         | 
| 111 111 | 
             
            	const uint8_t *parents_start, *committer_start;
         | 
| 112 112 | 
             
            	int i, parents = 0;
         | 
| 113 | 
            -
            	 | 
| 113 | 
            +
            	int64_t commit_time;
         | 
| 114 114 |  | 
| 115 115 | 
             
            	buffer += strlen("tree ") + GIT_OID_HEXSZ + 1;
         | 
| 116 116 |  | 
| @@ -166,10 +166,10 @@ static int commit_quick_parse( | |
| 166 166 | 
             
            			buffer--;
         | 
| 167 167 | 
             
            	}
         | 
| 168 168 |  | 
| 169 | 
            -
            	if ((buffer == committer_start) || ( | 
| 169 | 
            +
            	if ((buffer == committer_start) || (git__strtol64(&commit_time, (char *)(buffer + 1), NULL, 10) < 0))
         | 
| 170 170 | 
             
            		return commit_error(commit, "cannot parse commit time");
         | 
| 171 171 |  | 
| 172 | 
            -
            	commit->time =  | 
| 172 | 
            +
            	commit->time = commit_time;
         | 
| 173 173 | 
             
            	commit->parsed = 1;
         | 
| 174 174 | 
             
            	return 0;
         | 
| 175 175 | 
             
            }
         | 
    
        data/vendor/libgit2/src/index.c
    CHANGED
    
    | @@ -1114,7 +1114,9 @@ static int check_file_directory_collision(git_index *index, | |
| 1114 1114 | 
             
            }
         | 
| 1115 1115 |  | 
| 1116 1116 | 
             
            static int canonicalize_directory_path(
         | 
| 1117 | 
            -
            	git_index *index, | 
| 1117 | 
            +
            	git_index *index,
         | 
| 1118 | 
            +
            	git_index_entry *entry,
         | 
| 1119 | 
            +
            	git_index_entry *existing)
         | 
| 1118 1120 | 
             
            {
         | 
| 1119 1121 | 
             
            	const git_index_entry *match, *best = NULL;
         | 
| 1120 1122 | 
             
            	char *search, *sep;
         | 
| @@ -1124,8 +1126,8 @@ static int canonicalize_directory_path( | |
| 1124 1126 | 
             
            		return 0;
         | 
| 1125 1127 |  | 
| 1126 1128 | 
             
            	/* item already exists in the index, simply re-use the existing case */
         | 
| 1127 | 
            -
            	if ( | 
| 1128 | 
            -
            		memcpy((char *)entry->path,  | 
| 1129 | 
            +
            	if (existing) {
         | 
| 1130 | 
            +
            		memcpy((char *)entry->path, existing->path, strlen(existing->path));
         | 
| 1129 1131 | 
             
            		return 0;
         | 
| 1130 1132 | 
             
            	}
         | 
| 1131 1133 |  | 
| @@ -1190,6 +1192,52 @@ static int index_no_dups(void **old, void *new) | |
| 1190 1192 | 
             
            	return GIT_EEXISTS;
         | 
| 1191 1193 | 
             
            }
         | 
| 1192 1194 |  | 
| 1195 | 
            +
            static void index_existing_and_best(
         | 
| 1196 | 
            +
            	git_index_entry **existing,
         | 
| 1197 | 
            +
            	size_t *existing_position,
         | 
| 1198 | 
            +
            	git_index_entry **best,
         | 
| 1199 | 
            +
            	git_index *index,
         | 
| 1200 | 
            +
            	const git_index_entry *entry)
         | 
| 1201 | 
            +
            {
         | 
| 1202 | 
            +
            	git_index_entry *e;
         | 
| 1203 | 
            +
            	size_t pos;
         | 
| 1204 | 
            +
            	int error;
         | 
| 1205 | 
            +
             | 
| 1206 | 
            +
            	error = index_find(&pos,
         | 
| 1207 | 
            +
            		index, entry->path, 0, GIT_IDXENTRY_STAGE(entry), false);
         | 
| 1208 | 
            +
             | 
| 1209 | 
            +
            	if (error == 0) {
         | 
| 1210 | 
            +
            		*existing = index->entries.contents[pos];
         | 
| 1211 | 
            +
            		*existing_position = pos;
         | 
| 1212 | 
            +
            		*best = index->entries.contents[pos];
         | 
| 1213 | 
            +
            		return;
         | 
| 1214 | 
            +
            	}
         | 
| 1215 | 
            +
             | 
| 1216 | 
            +
            	*existing = NULL;
         | 
| 1217 | 
            +
            	*existing_position = 0;
         | 
| 1218 | 
            +
            	*best = NULL;
         | 
| 1219 | 
            +
             | 
| 1220 | 
            +
            	if (GIT_IDXENTRY_STAGE(entry) == 0) {
         | 
| 1221 | 
            +
            		for (; pos < index->entries.length; pos++) {
         | 
| 1222 | 
            +
            			int (*strcomp)(const char *a, const char *b) =
         | 
| 1223 | 
            +
            				index->ignore_case ? git__strcasecmp : git__strcmp;
         | 
| 1224 | 
            +
             | 
| 1225 | 
            +
            			e = index->entries.contents[pos];
         | 
| 1226 | 
            +
             | 
| 1227 | 
            +
            			if (strcomp(entry->path, e->path) != 0)
         | 
| 1228 | 
            +
            				break;
         | 
| 1229 | 
            +
             | 
| 1230 | 
            +
            			if (GIT_IDXENTRY_STAGE(e) == GIT_INDEX_STAGE_ANCESTOR) {
         | 
| 1231 | 
            +
            				*best = e;
         | 
| 1232 | 
            +
            				continue;
         | 
| 1233 | 
            +
            			} else {
         | 
| 1234 | 
            +
            				*best = e;
         | 
| 1235 | 
            +
            				break;
         | 
| 1236 | 
            +
            			}
         | 
| 1237 | 
            +
            		}
         | 
| 1238 | 
            +
            	}
         | 
| 1239 | 
            +
            }
         | 
| 1240 | 
            +
             | 
| 1193 1241 | 
             
            /* index_insert takes ownership of the new entry - if it can't insert
         | 
| 1194 1242 | 
             
             * it, then it will return an error **and also free the entry**.  When
         | 
| 1195 1243 | 
             
             * it replaces an existing entry, it will update the entry_ptr with the
         | 
| @@ -1208,7 +1256,7 @@ static int index_insert( | |
| 1208 1256 | 
             
            {
         | 
| 1209 1257 | 
             
            	int error = 0;
         | 
| 1210 1258 | 
             
            	size_t path_length, position;
         | 
| 1211 | 
            -
            	git_index_entry *existing  | 
| 1259 | 
            +
            	git_index_entry *existing, *best, *entry;
         | 
| 1212 1260 |  | 
| 1213 1261 | 
             
            	assert(index && entry_ptr);
         | 
| 1214 1262 |  | 
| @@ -1231,20 +1279,19 @@ static int index_insert( | |
| 1231 1279 |  | 
| 1232 1280 | 
             
            	git_vector_sort(&index->entries);
         | 
| 1233 1281 |  | 
| 1234 | 
            -
            	/* look if an entry with this path already exists  | 
| 1235 | 
            -
             | 
| 1236 | 
            -
             | 
| 1237 | 
            -
             | 
| 1238 | 
            -
             | 
| 1239 | 
            -
             | 
| 1240 | 
            -
             | 
| 1241 | 
            -
            		 | 
| 1242 | 
            -
             | 
| 1243 | 
            -
            	}
         | 
| 1282 | 
            +
            	/* look if an entry with this path already exists, either staged, or (if
         | 
| 1283 | 
            +
            	 * this entry is a regular staged item) as the "ours" side of a conflict.
         | 
| 1284 | 
            +
            	 */
         | 
| 1285 | 
            +
            	index_existing_and_best(&existing, &position, &best, index, entry);
         | 
| 1286 | 
            +
             | 
| 1287 | 
            +
            	/* update the file mode */
         | 
| 1288 | 
            +
            	entry->mode = trust_mode ?
         | 
| 1289 | 
            +
            		git_index__create_mode(entry->mode) :
         | 
| 1290 | 
            +
            		index_merge_mode(index, best, entry->mode);
         | 
| 1244 1291 |  | 
| 1245 1292 | 
             
            	/* canonicalize the directory name */
         | 
| 1246 1293 | 
             
            	if (!trust_path)
         | 
| 1247 | 
            -
            		error = canonicalize_directory_path(index, entry);
         | 
| 1294 | 
            +
            		error = canonicalize_directory_path(index, entry, best);
         | 
| 1248 1295 |  | 
| 1249 1296 | 
             
            	/* look for tree / blob name collisions, removing conflicts if requested */
         | 
| 1250 1297 | 
             
            	if (!error)
         | 
| @@ -34,13 +34,27 @@ static bool contains_angle_brackets(const char *input) | |
| 34 34 | 
             
            	return strchr(input, '<') != NULL || strchr(input, '>') != NULL;
         | 
| 35 35 | 
             
            }
         | 
| 36 36 |  | 
| 37 | 
            +
            static bool is_crud(unsigned char c)
         | 
| 38 | 
            +
            {
         | 
| 39 | 
            +
            	return  c <= 32  ||
         | 
| 40 | 
            +
            		c == '.' ||
         | 
| 41 | 
            +
            		c == ',' ||
         | 
| 42 | 
            +
            		c == ':' ||
         | 
| 43 | 
            +
            		c == ';' ||
         | 
| 44 | 
            +
            		c == '<' ||
         | 
| 45 | 
            +
            		c == '>' ||
         | 
| 46 | 
            +
            		c == '"' ||
         | 
| 47 | 
            +
            		c == '\\' ||
         | 
| 48 | 
            +
            		c == '\'';
         | 
| 49 | 
            +
            }
         | 
| 50 | 
            +
             | 
| 37 51 | 
             
            static char *extract_trimmed(const char *ptr, size_t len)
         | 
| 38 52 | 
             
            {
         | 
| 39 | 
            -
            	while (len &&  | 
| 53 | 
            +
            	while (len && is_crud((unsigned char)ptr[0])) {
         | 
| 40 54 | 
             
            		ptr++; len--;
         | 
| 41 55 | 
             
            	}
         | 
| 42 56 |  | 
| 43 | 
            -
            	while (len &&  | 
| 57 | 
            +
            	while (len && is_crud((unsigned char)ptr[len - 1])) {
         | 
| 44 58 | 
             
            		len--;
         | 
| 45 59 | 
             
            	}
         | 
| 46 60 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rugged
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.24. | 
| 4 | 
            +
              version: 0.24.0b3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Scott Chacon
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2015-10- | 
| 12 | 
            +
            date: 2015-10-21 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rake-compiler
         | 
| @@ -529,7 +529,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 529 529 | 
             
                  version: 1.3.1
         | 
| 530 530 | 
             
            requirements: []
         | 
| 531 531 | 
             
            rubyforge_project: 
         | 
| 532 | 
            -
            rubygems_version: 2.2. | 
| 532 | 
            +
            rubygems_version: 2.2.2
         | 
| 533 533 | 
             
            signing_key: 
         | 
| 534 534 | 
             
            specification_version: 4
         | 
| 535 535 | 
             
            summary: Rugged is a Ruby binding to the libgit2 linkable library
         |